You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch动态属性字段聚合需求:按character_id及value_id统计

解决Elasticsearch动态属性嵌套聚合问题

首先确认你的product_characters字段必须是nested类型的映射,否则数组元素的character_id和value_id会被扁平化存储,导致两者的关联关系丢失,这大概率是你之前聚合失败的原因。

如果映射还不是nested类型,需要先修改(修改后要重新索引数据):

PUT /your_index/_mapping
{
  "properties": {
    "product_characters": {
      "type": "nested",
      "properties": {
        "character_id": {"type": "keyword"},
        "value_id": {"type": "keyword"}
      }
    }
  }
}

接下来使用嵌套聚合实现需求:

GET /your_index/_search
{
  "size": 0, // 不需要返回原始文档,只看聚合结果
  "aggs": {
    "nested_characters": {
      "nested": {
        "path": "product_characters" // 指定nested字段路径
      },
      "aggs": {
        "group_by_character": {
          "terms": {
            "field": "product_characters.character_id", // 按属性类型分组
            "size": 100 // 根据实际数据量调整,显示所有character_id的话设大一点
          },
          "aggs": {
            "group_by_value": {
              "terms": {
                "field": "product_characters.value_id" // 每个属性类型下按属性值分组统计
              }
            }
          }
        }
      }
    }
  }
}

结果说明

  • 最外层的nested_characters聚合会遍历每个文档中的product_characters数组元素,保持每个元素内character_id和value_id的关联。
  • group_by_character会统计每个character_id出现的总次数(对应属性类型的数量)。
  • group_by_value作为嵌套聚合,会在每个character_id分组下,统计对应的value_id出现的次数。

内容的提问来源于stack exchange,提问作者Javohir Elmurodov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 04:05:40