如何通过连接两个数组来进行术语聚合?

时间:2019-01-27 19:19:26

标签: elasticsearch

我有一个看起来像这样的Elasticsearch映射:

"product": {
  "properties": {
    "attributes": {
      "type": "keyword",
      "normalizer": "lowercase"
    },
    "skus": {
      "type": "nested",
      "properties": {
        "attributes": {
          "type": "keyword",
          "normalizer": "lowercase"
        }
      }
    }
  }
}

我正在尝试通过将字段attributes和字段skus.attributes进行级联来进行术语汇总,但是我还没有弄清楚该怎么做。这两个字段都是简单的字符串数组。据我所知:

{
  "query": {
    "match_all": {}
  },
  "aggregations": {
      "unique_attrs": {
         "terms": {
            "field": "attributes"
         }
      }
   }
}

当然,我可以用某种方式重新索引我的数据,即会有另一个字段包含两个字段的值的串联,但这似乎是正确的。

1 个答案:

答案 0 :(得分:0)

如Elasticsearch论坛上所述:https://discuss.elastic.co/t/combining-nested-and-non-nested-aggregations/82583,建议在索引数据时使用copy_to映射将它们合并。