我有一个关于嵌套对象聚合的问题。
文件就像:
{
"features": [{
"key": "key1",
"values": ["A", "B"]
},
{
"key": "key2",
"values": ["C", "D"]
},
{
"key": "key2",
"values": ["E"]
}
]
}
其中“功能”是一个嵌套对象。我可以聚合并从键和值中获得不同的值,但是我需要在需要的地方进行合并的存储桶聚合:
键1-> A,B
键2-> C,D,E
是否必须使用复合聚合?还是使用哪种适当的聚合?
也欢迎Java示例!
谢谢!!!
最佳答案
您实际上并不需要composite
。以下应该没问题:
{
"size": 0,
"aggs": {
"nested_aggs": {
"nested": {
"path": "features"
},
"aggs": {
"by_key": {
"terms": {
"field": "features.key.keyword"
},
"aggs": {
"by_values": {
"terms": {
"field": "features.values.keyword"
}
}
}
}
}
}
}
}
假设您的映射如下所示{
"mappings":{
"properties":{
"features":{
"type":"nested",
"properties":{
"key":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"values":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
}
}
}
}
}
}