计算elasticsearch中索引中的文档数

时间:2018-04-06 11:16:01

标签: python python-3.x python-2.7 elasticsearch

我正在进行批量操作,使用python ElasticSearch Client一次索引100个文档。我想计算索引中的文档总数。所以我做了批量操作,然后计算索引中的文档数量如下:

helpers.bulk(es_client, actions);
es_client.count('index').get('count')

但是第二行仍然返回旧计数,我尝试从另一个文件运行第二行,返回正确的结果。我怀疑批量操作还没有完成。如果我错了,请纠正我,做什么是我想要的解决办法?

3 个答案:

答案 0 :(得分:2)

您必须使用refresh API:

POST /index/_refresh

  

刷新API允许显式刷新一个或多个索引,使自上次刷新以来执行的所有操作都可用于搜索。 (近)实时功能取决于所使用的索引引擎。例如,内部调用需要刷新,但默认情况下会定期调度刷新。

有关详细信息,请查看https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-refresh.html

答案 1 :(得分:2)

我在下面的示例中发现了这一点

es=Elasticsearch([{'host':'url','port':'9200','timeout':60}]) 
res = es.count(index='your index', doc_type='your doc_type', body={'query': your query })["count"]

如果有帮助,下面是使用Python进行计数的好例子:

https://python.hotexamples.com/examples/elasticsearch/Elasticsearch/count/python-elasticsearch-count-method-examples.html

答案 2 :(得分:1)

获取python中的索引文档计数

es.indices.refresh(index_name)
es.cat.count(index_name, params={"format": "json"})