弹性搜索过滤器,用于术语聚合的结果

时间:2019-04-20 10:05:01

标签: elasticsearch

将匹配词组前缀查询应用于Elastic Search中的词聚合结果。

我有条件查询,结果看起来像下面的

“存储桶”:[ { “ key”:“ KEY”, “计数”:20 }, { “钥匙锁”, “计数”:30 } ]

现在的要求是过滤那些键以某个前缀开头的存储桶,因此类似于匹配短语前缀。例如,如果匹配短语前缀查询的输入为“ LOC”,则仅应返回一个存储桶(第二个存储桶)。因此,它实际上是对术语聚合的过滤器。感谢您的想法。

1 个答案:

答案 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
    }
]

希望有帮助。