我是ElasticSearch的新手。我正在尝试使用以下内联脚本更新所有记录。
ES版本:5.1.1
发布http://localhost:9200/index_1,index_2/type/_update_by_query?ignore_unavailable=true
{
"script": {
"inline": "if(ctx._source.containsKey(\"status\")){ctx._source.status.name = 'UPDATED_STATUS_NAME';ctx._source.status.value = 'UPDATED_STATUS_VALUE';ctx._source.status.name = 'UPDATED_STATUS_NAME';ctx._source.status.value = 'UPDATED_STATUS_VALUE';}"
}
}
现在考虑以下情况:
1]我们通过ES上的查询点击更新
2]第1步正在进行中,我们会收到另一个更新请求
3]我们再次通过ES上的查询点击更新
4]现在有2个更新查询正在进行中
我想知道ElasticSearch在这种情况下的行为
1]会有冲突吗?
2] ES会因为我们按两千个文档的查询进行更新而下降,或者可能是用户想要执行更新操作的次数 或而非上述操作中的任何风险
的问候,
桑迪普
答案 0 :(得分:0)
更新文档的版本冲突时。
处理依赖于查询参数包含(?conflicts = proceed?)
1通过将转义版本冲突的文档休息将更新。
2未通过,则文档会更新,直到出现版本冲突并且操作中止。
注意:在任何一个案例更新的文档都不会像RDBS一样滚动。