17
votes

I am having a Elastic search running 2.2 version. I have created index and loaded sample documents. I found some problem in it. When i give

GET index/type/_count

I am getting the correct answer

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

But when i see the things using 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 

Where docs.count : 79978. Which is wrong.

Why i am seeing docs.count with wrong value. The exact document count is 9998

1
you may have docs in some other type in same index, try GET index/_count to confirmPandiyan Cool
{ "count": 9998, "_shards": { "total": 5, "successful": 5, "failed": 0 } } I am getting the same 9998. When i give GET index/_countbacktrack
Do you have fields with nested type in your mapping?Val
@Val, Yes i am havingbacktrack

1 Answers

29
votes

GET index/type/_count will return the top-level document count.

docs.count in _cat/indices returns the count of all documents, including artificial documents that have been created for nested fields.

That's why you see a difference:

  • The former count (i.e. 9998) will tell you how many Elasticsearch documents are in your index, i.e. how many you have indexed.
  • The latter count (i.e. 79978) will tell you how many Lucene documents are in your index.

So if one ES document contain a nested field with 5 sub-elements, you'll see 1 ES document, but 6 Lucene documents. Judging by the counts, each of your ES document has between 7 and 8 nested elements within it.