确定将多少文档提取到ES服务器中

时间:2019-09-16 09:22:33

标签: elasticsearch

我创建了一个仅称为:document的索引。当我跑步时:

http://bla:9200/_stats?pretty=true

我得到了这个(缩写):

{
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_all" : {
    "primaries" : {
      "docs" : {
        "count" : 31192,
        "deleted" : 32424
      },
      "store" : {
        "size_in_bytes" : 817228373
      },
      "indexing" : {
        "index_total" : 2919822,
        "index_time_in_millis" : 1759994,
        "index_current" : 0,
        "index_failed" : 0,
        "delete_total" : 0,
        "delete_time_in_millis" : 0,
        "delete_current" : 0,
        "noop_update_total" : 0,
        "is_throttled" : false,
        "throttle_time_in_millis" : 0
      },
snip

这对我来说表明2919822文档已被索引/摄取。它对应于从我的C#代码发送到ES服务器的文档数。

但是,如果我运行此命令:

http://bla:9200/_cat/indices?v

我明白了:

health status index    uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   document 8lqJK19xR3yJ7se2sLhWuQ   1   1      31192        32424    778.4mb        778.4mb

表明只有31192个文档。

有人可以解释哪个数字正确吗?

PS:

http://bla:9200/_cat/count/document?v

导致:

epoch      timestamp count
1568629672 10:27:52  31522

1 个答案:

答案 0 :(得分:2)

doc.count代表在索引中建立索引的文档数,而index_total代表在Elasticsearch正常运行期间执行的索引操作数。

因此,如果您更新文档,它将被视为一个索引操作,但您的doc.count不会增加。请看一下这个示例,其中我们使用_bulk API

为2个文档建立了索引并更新了2个文档
POST documents/doc/_bulk
{"index":{"_id": 111}}
{"likes": 10, "user": "cs0815", "message": "elastic111"}
{"index":{"_id": 222}}
{"likes": 20, "user": "cs0815", "message": "elastic222"}
{"index":{"_id": 111}}
{"likes": 30, "user": "cs0816", "message": "elastic11111"}
{"index":{"_id": 222}}
{"likes": 40, "user": "cs0816", "message": "elastic22222"}

此后,我们将观察到doc.count将为2,index_total将为4:

因此,在您的情况下,您已完成index_total 2919822,docs.deleted 32424和docs.count 31192次(以及根据您的ID进行的许多重复的更新这些算作1)