我有弹性搜索群集,我总是使用doc_as_upsert Update
api。
我从不打电话给DeleteApi
。
但是如果我在弹性搜索中看到很多DeletedDocuments指标。
upsert是否间接调用delete然后插入?
答案 0 :(得分:3)
ElasticSearch(ES)不支持文档更新,即文档是不可变的,我们无法更改它们。 Update API似乎可以更改文档,但实际上Elasticsearch会执行以下操作:
在内部,Lucene(ES是基于Lucene库的搜索引擎)只是在每段的位集中标记一点来记录文档被删除。所有后续搜索都会跳过任何已删除的文档这种方法是必要的,因为否则更新Lucene的一次写入索引数据结构(如发布列表)的成本太高。 您可以在this blog post
中了解有关删除的更多信息说实话,Lucene支持就地更新,但这种方法只能用于更新单值非索引和非存储的基于docValue的数字字段,并且只能由Solr支持