1

我们有一个索引,其中包含 241.047 个项目。这些项目可以有任意数量的子项目,这些子项目被索引为嵌套文档。子项总数为 381.705。

两者include_in_parentinclude_in_root都没有在映射中设置,这意味着每个嵌套文档都被索引为附加文档。这应该意味着索引中总共会有 241.047 + 381.705 = 622.752 个文档。

当我运行以下 Curl 命令来查找索引中的文档数时,我得到了一个不同的数字,它并不遥远,但我想知道为什么它给了我一个不同的数字,它没有返回我期待的数字。

  • curl -XGET 'http://localhost:9200/catawiki_development/_status?pretty'返回 622.861

接下来,当我运行 Curl 命令来获取根文档的数量时,我得到的数字与我运行match_all查询并询问返回的文档数量不同

  • curl -XGET 'http://localhost:9200/elasticsearch_development/_count?pretty'返回 241.156
  • match_all查询返回正确数量的文档,241.047

如何解释这些差异?

4

1 回答 1

2

count api 请求的路径与普通搜索请求的路径有很大的不同。事实上,它是一种快捷方式,只允许获取与查询匹配的文档数,就是这样。它与搜索不同search_type=count,它实际上只是搜索的第一部分:将搜索请求广播到所有分片,但没有减少/获取,因为我们只想返回匹配文档的总数。您还可以将构面等添加到搜索请求(也可以使用时search_type=count),这是您无法使用 count api 完成的。

就是说,由于上述原因,您看到不同之处我并不感到惊讶,但如果能准确了解问题所在,那就太好了。最好的办法是能够用少量文档重现问题,并打开一个包含curl 娱乐的问题,以便我们查看它。

search_type=count同时,如果您对 count api 有疑问,我建议您使用搜索请求。保证返回与正常搜索相同数量的文档,只是因为它是完全相同的逻辑。

于 2013-09-06T08:10:00.480 回答