弹性搜索文档计数

bac*_*ack 9 indexing count elasticsearch

我正在进行运行2.2版本的弹性搜索.我已经创建了索引和加载的示例文档.我发现了一些问题.当我给

GET index/type/_count
Run Code Online (Sandbox Code Playgroud)

我得到了正确的答案

{
   "count": 9998,
   "_shards": {
      "total": 5,
      "successful": 5,
      "failed": 0
   }
}
Run Code Online (Sandbox Code Playgroud)

但是当我看到使用的东西时 http://IP:9200/_cat/indices?v

health status index pri rep docs.count docs.deleted store.size pri.store.size     
yellow open   index  5   1      79978            0     32.1mb         32.1mb 
Run Code Online (Sandbox Code Playgroud)

docs.count:79978.哪个错了.

为什么我看到docs.count的值不正确.确切的文件数是9998

Val*_*Val 20

GET index/type/_count 将返回顶级文档计数.

docs.countin _cat/indices返回所有文档的计数,包括为嵌套字段创建的人工文档.

这就是你看到差异的原因:

  • 前计数(即9998)将告诉您索引中有多少Elasticsearch文档,即您已编入索引的数量.
  • 后一个计数(即79978)将告诉您索引中有多少Lucene文档.

因此,如果一个ES文档包含一个包含5个子元素的嵌套字段,您将看到1个ES文档,但是6个Lucene文档.根据计数来判断,每个ES文档中都有7到8个嵌套元素.

  • @youhans 是 [here](https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-indices.html) (4认同)