当我使用_update_by_query而没有冲突选项时,它导致了version_conflict_engine_exception错误。
阅读this document,我发现conflict = proceed可以与请求一起传递以避免此错误。
虽然我对文档中的措辞感到困惑。我知道一旦指定了conflict = proceed,它就不会在发生版本冲突时中止。
但它会更新那些发生冲突的文档,或者它不会更新这些文档,并且只更新没有冲突的文档。
注意:我使用的是elasticsearch 5.6
当文档在ID或映射或字段类型中不匹配时,会发生版本冲突。当单个文档发生冲突时,update_by_query将停止,并且对于该索引和下一个索引中的其余文档,更新将不可用。 (当然有些文档已经更新)如果你使用冲突=继续它不会只更新文档有冲突(只是跳过那个文档而不是整个索引)。