首页 > 解决方案 > 使用值数组的 Elasticsearch agg 过滤器

问题描述

{ "colors":["red","black","blue"] }
{ "colors":["red","black"] }
{ "colors":["red"] }
{ "colors":["orange, green"] }
{ "colors":["purple"] }

如何运行过滤数组字段中包含的特定值的 agg?例如,我只想要“红色”的计数,并希望从聚合结果中排除它的其他兄弟。

注意:我不能对“red”使用“include”模式。这个例子很简单,现实世界的例子有一长串唯一的字符串值。

我想使用字符串值数组过滤 agg。

标签: elasticsearch

解决方案


来自文档

对于基于精确值的匹配,include 和 exclude 参数可以简单地采用一个字符串数组,这些字符串表示在索引中找到的术语:

{
  "aggs": {
    "colors": {
      "terms": {
        "field": "colors",
        "include": [ "red","black" ]
      }
    }
  }
}

推荐阅读