更新整个选定的弹性记录

时间:2018-04-20 14:38:27

标签: elasticsearch go

使用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只是用于测试,我将从数据库中加载它,因为我不知道会发生什么变化,我需要更新整个记录吗?

感谢。

1 个答案:

答案 0 :(得分:0)

请务必阅读github.com/olivere/elastic的单元测试。例如。 update_test.goupdate_integration_test.go说明了如何进行更新。结合official documentation,您将很快成为Elasticsearch的专家: - )