将匹配词组前缀查询应用于Elastic Search中的词聚合结果。
我有条件查询,结果看起来像下面的
“存储桶”:[ { “ key”:“ KEY”, “计数”:20 }, { “钥匙锁”, “计数”:30 } ]
现在的要求是过滤那些键以某个前缀开头的存储桶,因此类似于匹配短语前缀。例如,如果匹配短语前缀查询的输入为“ LOC”,则仅应返回一个存储桶(第二个存储桶)。因此,它实际上是对术语聚合的过滤器。感谢您的想法。
答案 0 :(得分:1)
您可以在术语聚合中使用include parameter来过滤基于正则表达式的值。
类似的事情应该起作用:
GET stackoverflow/_search
{
"_source": false,
"aggs": {
"groups": {
"terms": {
"field": "text.keyword",
"include": "LOC.*"
}
}
}
}
示例:假设您有三个具有三个不同术语的文档( LOCK , KEY 和 LOL )中的索引。因此,如果您执行以下请求:
GET stackoverflow/_search
{
"_source": false,
"aggs": {
"groups": {
"terms": {
"field": "text.keyword",
"include": "L.*"
}
}
}
}
您将获得以下存储桶:
"buckets" : [
{
"key" : "LOCK",
"doc_count" : 1
},
{
"key" : "LOL",
"doc_count" : 1
}
]
希望有帮助。