问题描述
我对嵌套对象的聚合有疑问。 文档就像:
{
"features": [{
"key": "key1","values": ["A","B"]
},{
"key": "key2","values": ["C","D"]
},"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","ignore_above":256
}
}
}
}
}
}
}
}