javascript - 如何在聚合中组合相似的项目?

标签 javascript elasticsearch

我正在尝试创建一个滤色器。返回的颜色大多是正常的,但还有一些其他颜色。例如,我的结果显示如下:

{ key: "WHITE", doc_count: 300 }, 
{ key: "OFFWHITE", doc_count: 2 }, 
{ key: "SUPER WHITE", doc_count: 1 }

我的聚合看起来像:


aggs: {
    Color: {
        terms: {
            field: 'colors.keyword',
            size: 100,
        },
    },
}

我想将任何包含“白色”的东西合并到一个桶中。与其他顶级颜色相同。这可能吗?如何实现?

最佳答案

另一种方法是使用 filter aggregation .这里的过滤器可以是 wildcard query匹配颜色。

聚合看起来如下:

{
  "aggs": {
    "WHITE": {
      "filter": {
        "wildcard": {
          "colors.keyword": "*WHITE*"
        }
      }
    },
    "BLUE": {
      "filter": {
        "wildcard": {
          "colors.keyword": "*BLUE*"
        }
      }
    }
  }
}

以上不需要任何脚本。但正如 Kamal 所建议的那样,最好的方法是拥有一个单独的字段,例如 primary_color 并在其上聚合。

关于javascript - 如何在聚合中组合相似的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56153826/

相关文章:

elasticsearch - Elasticsearch标准分析器停用词

java - 使用 JEST 写入 Elasticsearch 7.3 - 无效的 POST 方法

javascript - Mongoose 的日期?

javascript - svg 在不同部分的流体颜色变化

javascript - 此代码在 Chrome 中有效,但在 Internet Explorer 中无效

python - 在 python 中使用\n 分隔的 JSON 发布请求

elasticsearch - Elasticsearch 6.3在关键字字段中使用空格查询并且不返回所有文档

Golang Elasticsearch 奥利维尔 : Root mapping definition has unsupported parameters

javascript - Uncaught ReferenceError : $ is not defined? Jsfiddle

javascript - 添加功能事件