字母范围?

时间:2017-11-06 17:16:57

标签: elasticsearch

我不确定这是否是我正在寻找的正确的事情,有人能指出我正确的方向吗?

我们通过这个特定的elasticsearch实例运行了一些不同类型的数据,因为它们都是同一个API的一部分。我需要的这个特定数据集是能够搜索并返回以A-G,H-N,O-U,V-Z等字母组开头的所有结果。

我不确定这是否被视为范围或聚合,或者只是我必须在搜索后以编程方式执行的操作。有人能指出我正确的方向吗?老实说,我甚至不确定谷歌的条款。

1 个答案:

答案 0 :(得分:1)

我认为这有三个方面。

您可以将multi-fields功能用于您希望群组所依据的任何字段(让我们说name字段)。为此目的将有name.first_letter路径,使用edge_ngram tokenizer min_gram = 1和max_gram = 1进行分析。因此,此路径仅允许搜索和过滤这个名字的第一个字母。

为了获得这四个存储桶,filters bucket aggregation可以与针对terms应用的name.first_letter过滤器一起使用,您可以在其中过滤表示存储桶['A', 'B', ..., 'G']的值。< / p>

但是,存储桶聚合只返回文档计数。您需要指定一个利用top_hits aggregation的子聚合来实际获取分段命中。