gpt4 book ai didi

elasticsearch - 更新文档是否会增加索引的 "delete"计数?

转载 作者:行者123 更新时间:2023-12-02 23:14:19 25 4
gpt4 key购买 nike

我在 elasticsearch 索引中被删除的文档数量方面遇到了一个奇怪的问题。数据永远不会被删除,只会被插入和/或更新。虽然我可以看到文档总数在增加,但我也在已删除文档列中看到一些非零值。我无法理解这个数字是从哪里来的。

我尝试阅读更新文档是否先删除文档然后重新索引它,这样删除计数就会增加。但是,我无法获得这方面的任何信息。

我输入的检查索引的命令是:

curl -XGET localhost:9200/_cat/indices

我得到的输出是:

yellow open e0399e012222b9fe70ec7949d1cc354f17369f20               zcq1wToKRpOICKE9-cDnvg 5 1 21219975 4302430  64.3gb  64.3gb

注:是单节点elasticsearch。

我希望知道删除文档背后的原因。

最佳答案

您是正确的,更新是您看到文档删除计数的原因。

如果我们谈论 lucene,那么就没有什么比更新更重要的了。也可以说lucene中的文档是不可变的。

那么elastic是怎么提供update这个特性的呢?

它通过使用 _source 字段来实现。因此据说应该启用 _source 以使用弹性更新功能。使用更新 api 时,elastic 引用 _source 来获取所有字段及其现有值,并仅替换更新请求中发送的字段的值。它将现有文档标记为已删除,并使用更新后的 _source 为新文档编制索引。

如果不是实际更新,这样做有什么好处?

  1. 它消除了应用程序始终编译完整文档的开销,即使一小部分字段需要更新也是如此。可以使用更新 api 仅发送需要更新的字段,而不是发送完整的文档。休息由弹性照顾。

  2. 它减少了一些额外的网络往返,减少了负载大小,还减少了版本冲突的可能性。

您可以阅读更多更新工作原理 here .

关于elasticsearch - 更新文档是否会增加索引的 "delete"计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57121822/

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