elasticsearch - 嵌套字段上的 Elasticsearch 复合聚合查询
问题描述
我对嵌套对象的聚合有疑问。文件是这样的:
{
"features": [{
"key": "key1",
"values": ["A", "B"]
},
{
"key": "key2",
"values": ["C", "D"]
},
{
"key": "key2",
"values": ["E"]
}
]
}
其中“特征”是一个嵌套对象。我可以聚合并从键和值中获取不同的值,但我需要获得一个组合的桶聚合,我需要:
key1 -> A,B key2 -> 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
}
}
}
}
}
}
}
}
推荐阅读
- angularjs - 如何从 ng-repeat 列表(AngularJS)中将“收藏夹”项目存储在本地存储中?
- javascript - Clip-path 在 css 中有效,但在 JS 中无效(safari 问题)
- eclipse - Eclipse 站点地图管理器在哪里
- javascript - 如何将对象放入对象内部
- r - DiagrammR中填充颜色的Alpha
- c# - 可能的 System.InvalidCastException 将枚举转换为 int?
- python - 在 Django 视图中计算 i+1 或 i-1
- javascript - 我可以在非 SPA 项目上使用 Axios 吗?
- ruby - 如何从小写字符串数组中返回随机的大写和小写字符串
- angular - 如何在构造函数Angular中传递对象?