如何在现有的Elasticsearch索引中增补文档?

问题描述

我有一个Elasticsearch索引,其中包含多个文档,现在我想用一些新文档来更新索引,这些新文档也可能包含现有文档的副本。最好的方法是什么?我正在对所有CRUD操作使用elasticsearch py

解决方法

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

现在,即使您有重复的数据但具有相同的ID,它也会替换现有文档,并且与先获取文档并比较两个文档以查看它们是否重复和相比,它的性能更好,并且性能更高。而不是丢弃来自应用程序的更新/更新请求,而不是仅仅索引索引(如果有的话,ES就会再次插入重复的文档)。