我不确定这是否是我正在寻找的正确的事情,有人能指出我正确的方向吗?
我们通过这个特定的elasticsearch实例运行了一些不同类型的数据,因为它们都是同一个API的一部分。我需要的这个特定数据集是能够搜索并返回以A-G,H-N,O-U,V-Z等字母组开头的所有结果。
我不确定这是否被视为范围或聚合,或者只是我必须在搜索后以编程方式执行的操作。有人能指出我正确的方向吗?老实说,我甚至不确定谷歌的条款。
答案 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的子聚合来实际获取分段命中。