在Elasticsearch中计算索引中文档的数量

19
我正在使用Python ElasticSearch客户端进行批量操作,一次索引100个文档。我想计算索引中文档的总数。因此,我执行批量操作,然后按如下方式计算索引中文档的数量:

我正在使用 Python ElasticSearch 客户端进行批量操作,一次索引 100 个文档。我想统计一个索引中文档的总数。所以我先执行批量操作,然后计算索引中文档的数量如下:

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

然而第二行仍返回旧的计数,我尝试从不同的文件运行第二行,结果返回正确的结果。我怀疑批量操作尚未完成。如果我错了,请纠正我,并告诉我如何解决我的问题?


显然,使用批量操作添加的文档尚未考虑到该索引刷新,在获取计数之前刷新索引可以解决该问题。 - Pavan Bahuguni
3个回答

20

在Python中获取索引文档计数

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

count 函数返回一个 ListApiResponse,所以要获取计数的整数值,您需要访问 int(res[0]["count"]),其中 reses.cat.count 的结果。 - mrexodia

8

5
您需要使用refresh API:

POST /index/_refresh

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

更多信息请查看https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-refresh.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接