如何获取 ElasticSearch 索引中完整索引术语的列表?

问题描述 投票:0回答:1

非常简单的问题。 我有一个带有文本字段的 ElasticSearch 索引。如何获取该字段索引的所有单词的列表?有什么简单的方法吗?

我正在使用 python 和

elasticsearch
库工作。

elasticsearch indexing lucene
1个回答
0
投票

⚠️警告

获取索引的所有索引词在时间上是昂贵的 和资源,特别是当唯一术语的数量很大时。所以 请在生产集群上使用时小心。

解决方案

为此,Elasticsearch 首先需要将所有单词加载到内存中,默认情况下对于文本字段禁用此功能(有关更多信息,请参阅FieldData 映射参数)。

假设您的索引上启用了字段数据,您可以使用以下搜索查询获取唯一术语列表,并按其频率排序:

{
"size": 0,
    "aggs": {
        "indexed_terms": {
            "terms": {
                "field": "field_name",
                "size": 10000 (1)
            }
        }
    }
}
  1. size 参数控制要返回的唯一术语的最大数量。

除非启用fieldData,否则你会遇到如下错误:

文本字段未针对需要的操作进行优化 每个文档的字段数据,例如聚合和排序,所以这些 默认情况下禁用操作。请使用关键字字段 反而。或者,在您的字段上设置 fielddata=true 以便 通过反转倒排索引来加载字段数据。请注意,这可以 使用大量内存。

对于单个文档...

如果您只需要获取单个文档的索引术语列表,您可以简单地使用 _termsvector API,而无需再启用字段数据。

© www.soinside.com 2019 - 2024. All rights reserved.