2016-04-26 82 views
4

我正在运行2.2版本的弹性搜索。我创建了索引并加载了示例文档。我发现它有一些问题。当我给弹性搜索文档计数

GET index/type/_count 

我得到了正确的答案

{ 
    "count": 9998, 
    "_shards": { 
     "total": 5, 
     "successful": 5, 
     "failed": 0 
    } 
} 

但是,当我看到的东西用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 

其中docs.count:79978.哪项是错误的。

为什么我看到docs.count的错误值为。确切的文件数量是9998

+0

你可能有文档在同一个索引一些其他类型,尝试GET指数/ _count确认 –

+0

{ “计数”:9998, “_shards”:{ “总”:5, “成功”:5 , “失败”:0 } }我得到相同的9998.当我给GET索引/ _count – Backtrack

+0

你的映射中有嵌套类型的字段吗? – Val

回答

7

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

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

这就是为什么你看到一个区别:

  • 前者计数(即9998)会告诉你多少Elasticsearch文件都在你的指数,即你有多少索引。
  • 后一个计数(即79978)会告诉您索引中有多少个Lucene文档

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