在elasticsearch中查找包含术语的文档数

Finding the number of documents that contain a term in elasticsearch

我有一个 Elasticsearch 索引,其中包含大约 25 亿份文档,在一个分析领域中包含大约 1800 万个不同的术语。是否可以在不搜索索引的情况下快速统计包含某个词的文档数量?

似乎ES会在分析字段时存储该信息,或者可能能够计算倒排索引的长度。如果有一种方法可以搜索多个术语并获得每个术语的文档频率,那就更好了。我想定期这样做数千次,但我不知道是否有有效的方法。

您可以使用 Count API 仅 return 来自查询的计数,而不是完整的文档列表。

至于 Elasticsearch 是否为您提供了无需查询即可执行此操作的方法:我有理由相信 Elasticsearch 不会在索引之外存储该信息,因为这正是 lucene 索引 已经。这就是倒排索引,按术语索引的文档映射。 Lucene 旨在提高按术语查找文档的效率。