【问题标题】:How to upsert documents in an existing elasticsearch index?如何在现有的弹性搜索索引中插入文档?
【发布时间】:2020-09-28 16:53:54
【问题描述】:

我有一个包含多个文档的弹性搜索索引,现在我想用一些新文档更新索引,这些新文档可能还包含现有文档的副本。最好的方法是什么?我使用 elasticsearch py 进行所有 CRUD 操作

【问题讨论】:

    标签: elasticsearch elasticsearch-py


    【解决方案1】:

    elasticsearch 中的每次更新都会删除旧文档并创建一个新文档,因为在 elastic-search 中称为 segments 的文档集合的最小单元是不可变的,因此当您索引新文档或更新任何现有文档时,它在merge process 期间进入新的段,这些段合并为更大的段。

    现在,即使您有重复的数据但具有相同的 id,它也会替换现有文档,并且 它比第一次获取文档以及比较两个文档以查看它们是否重复和而不是丢弃来自应用程序的更新/更新请求, 而不是仅仅索引任何即将到来的内容,ES 将再次插入重复的文档。

    【讨论】:

    • 我们不存储 ID,这就是挑战所在。如果不替换 id,我会重复两次相同的记录。还有其他解决方法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多