使用olivere/elastic
将我的Go(1.10)连接到我在Docker容器中运行的Elastic搜索。
现在当数据库有更新时,它会运行我的API的触发器,它应该在我的弹性搜索中搜索该记录,如果没有找到则添加新记录或者如果找到则更新整个记录。
现在我已经添加了新的记录代码及其工作但是我看不到如何更新整个记录,我可以选择该记录的所选元素而不是整个记录。
这就是我所拥有的:
testData := []byte(`{"data1":"22222","data2":"ddddd"}`)
script := elastic.NewScript("ctx._source = params.newCont").Params(map[string]interface{}{"newCont": testData})
put1, _ := client.Update().
Index("myindex").
Type("mytype").
Id("id-here").
Script(script).
Do(ctx)
fmt.Println( put1 )
现在,当我将_source
更新为类似_source.data1
的内容时,我可以更新,但我希望我的testData
var更新此ID中的所有记录。 testData
var只是用于测试,我将从数据库中加载它,因为我不知道会发生什么变化,我需要更新整个记录吗?
感谢。
答案 0 :(得分:0)
请务必阅读github.com/olivere/elastic的单元测试。例如。 update_test.go和update_integration_test.go说明了如何进行更新。结合official documentation,您将很快成为Elasticsearch的专家: - )