gpt4 book ai didi

python - 等待使用 elasticsearch DSL 完成 UpdateByQuery

转载 作者:行者123 更新时间:2023-12-03 00:48:56 25 4
gpt4 key购买 nike

我正在使用一个非常大的数据集,我需要清理(删除)某些文档的某些属性,然后立即将此类属性添加到其他文档。有时,具有被删除属性的文档是我应该更新的文档。问题是有时会出现 ConflictError,我想知道如何等待第一个查询完全执行后再执行第二个查询。这是我正在使用的代码:

ubq = UpdateByQuery(using=self.es, index=self.index).update_from_dict(query1).script(source=script_remove_source)
ubq.execute()

ubq = UpdateByQuery(using=self.es, index=self.index).update_from_dict(query2).script(source=script_add_source)
ubq.execute()

任何的想法?

在弹性文档中,他们提到了参数 wait_for_completion ,但它们没有提供使用示例。无论如何,这不是 Elasticsearch DSL。我读了 DSL docs但没有提到同步或异步。

我现在正在做的就是在 3 秒之间 sleep ……它确实有效,但这太糟糕了。

提前致谢!

最佳答案

我终于用 retry_on_conflict 管理它:

es.update(
index=index,
doc_type=doc_type,
id=id_str,
body={"doc": {
session: state
}},
retry_on_conflict=5
)

关于python - 等待使用 elasticsearch DSL 完成 UpdateByQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56602137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com