大佬教程收集整理的这篇文章主要介绍了groovy – 使用脚本有条件地更新Elasticsearch中的文档,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
curl -XPOST 'localhost:9200/test/type1/1/_@R_874_9531@e' -d ' { "script": " IF ctx._source.user_@R_874_9531@e_time > my_new_time THEN do not @R_874_9531@e ELSE proceed with @R_874_9531@e","params": { "my_new_time": "2014-09-01T17:36:17.517"" },"doc": { "name": "new_name" },"doc_as_upsert": true }'
我在Elasticsearch中可以在“脚本”字段中编写的伪代码吗?如果是这样,我会喜欢一些语法帮助(groovy,python或javascript).
任何替代方法建议也将受到高度赞赏.
它的工作方式是Update API允许你两个使用version参数来控制更新是否应该继续.
因此,以上面的示例为例,第一个索引/更新操作将创建一个带有版本的文档:1.然后考虑您有两个并发请求的情况.组件A和B都将发送更新的文档,它们最初都使用版本:1检索文档,并在其请求中指定该版本(请参阅下面的查询字符串中的version = 1).当且仅当提供的版本与当前版本相同时,Elasticsearch才会更新文档
组件A和B都发送了这个,但A的请求是第一个发出它的:
curl -XPOST 'localhost:9200/test/type1/1/_@R_874_9531@e?version=1' -d '{ "doc": { "name": "new_name" },"doc_as_upsert": true }'
此时,文档的版本将为2,B的请求将以http 409 Conflict结束,因为B假定文档仍处于版本1,即使版本由于A的请求而同时增加.
B绝对可以使用新版本(即2)检索文档并再次尝试更新,但这次使用URL中的?version = 2.如果它是第一个到达ES的,则更新将成功.
以上是大佬教程为你收集整理的groovy – 使用脚本有条件地更新Elasticsearch中的文档全部内容,希望文章能够帮你解决groovy – 使用脚本有条件地更新Elasticsearch中的文档所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。