OpenSearch按Item Hash分组求和数组Amount的表格可视化问题
解决OpenSearch嵌套数组的Table Visualization求和错误问题
问题根源
你的数据中items是嵌套数组结构,但默认情况下OpenSearch会将数组字段当作多值字段处理,聚合时会把同一文档内所有items.amount的值与每个items.hash关联,导致求和时重复计算同文档内的其他amount值,出现统计错误。
解决方案
1. 确保索引的Mapping正确设置items为nested类型
如果你的索引还没将items设为nested类型,需要重新创建索引并设置正确的mapping(若已有数据,需重新索引迁移):
{ "mappings": { "properties": { "fieldH": { "type": "keyword" }, "items": { "type": "nested", "properties": { "hash": { "type": "keyword" }, "amount": { "type": "integer" } } }, "date": { "type": "date" } } } }
nested类型会把数组中的每个对象当作独立的逻辑文档处理,保证每个hash只关联自身对应的amount。
2. 调整可视化的聚合设置
在Table Visualization的配置中,按以下层级添加聚合:
- 第一层:Nested聚合:路径选择
items,作为父聚合包裹后续的分组和求和 - 第二层:Terms聚合:字段选择
items.hash,作为分组依据(对应表格的Item Hash列) - 第三层:Sum聚合:字段选择
items.amount,作为求和计算(对应表格的Amount列)
完成以上设置后,聚合会正确关联每个items对象的hash和amount,得到你期望的统计结果:
| Item Hash | Amount |
|---|---|
| item1 | 2 |
| item2 | 8 |
| item3 | 3 |
内容的提问来源于stack exchange,提问作者KingMarcel
相关产品推荐
相关产品推荐

