3 回答

TA貢獻1871條經驗 獲得超8個贊
所以,我終于讓這件事起作用了。這是我用來完成它的代碼。
update, err := client.Update().Index("test3").Type("user").Id("2").Doc(map[string]interface{}{"location": message}).Do()
fmt.Println("updated id: ", update.Id)
這對我來說很好。
我嘗試了另一種方法來更新它,但它不起作用。我把它貼在這里,以便人們可以查看和檢查。是這樣的。
update := client.Update().Index("test3").Type("user").Id("2").Script(elastic.NewScript("ctx._source.location = loc").Params(map[string]interface{}{"loc": message}).Lang("groovy"))
fmt.Println("updated id: ", update.Id)
希望這對某人有幫助!

TA貢獻1877條經驗 獲得超1個贊
如果您使用的是github.com/olivere/elastic,請務必檢查單元測試。它們不僅可以作為更改的安全網,還可以說明如何使用該庫。例如update_test.go和update_integration_test.go附帶了如何使用文檔中解釋的語法的示例列表。

TA貢獻1818條經驗 獲得超8個贊
如果你想使用腳本,這里是一個條件更新的例子:
_, err := client.UpdateByQuery().
Query(query).
Index(index).
Script(elastic.NewScript("ctx._source = tag").Params(map[string]interface{}{"tag": doc}).Lang("groovy")).
Type(docType).IgnoreUnavailable(true).
Do(ctx)
index是文檔所在的 ES 索引名稱。 查詢具有所有必要條件(例如:僅當年齡>18 時才更新文檔)。有關查詢的更多知識,請參閱此處。查詢的輸出將在 ctx.source 中可用,這里我將其設置為我傳遞的參數。您還可以執行以下操作: "ctx.source.salary = sal" 在這種情況下,sal 將是您將動態傳遞的參數之一。我希望,它有幫助。
- 3 回答
- 0 關注
- 520 瀏覽
添加回答
舉報