Dmy*_*hyi 14 aggregation elasticsearch
如何仅在对象属性上运行聚合查询,但获取结果中的所有属性?我希望得到[{'doc_count': 1, 'key': {'id': 1, 'name': 'tag name'}}],但[{'doc_count': 1, 'key': '1']相反.字段'tags'上的聚合返回零结果.
制图:
{
"test": {
"properties" : {
"tags" : {
"type" : "object",
"properties": {
"id" : {"type": "string", "index": "not_analyzed"},
"name" : {"type": "string", "index": "not_analyzed", "enabled": false}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
聚合查询:(仅按预期返回ID,但如何在结果中获取ID和名称对?)
'aggregations': {
'tags': {
'terms': {
'field': 'tags.id',
'order': {'_count': 'desc'},
},
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
通过聚合获得ID和名称,"script": "_source.tags"但仍在寻找更快的解决方案.
小智 5
如果你愿意,你可以使用脚本,例如
"terms":{"script":"doc['tags.id'].value + '|' + doc['tags.name'].value"}
对于每个创建的存储桶,您将获得一个键,其中包含脚本中包含的字段值.但是说实话,聚合的目的不是返回完整的文档,而是要对文档组(桶)进行计算并返回结果,例如总和和不同的值.您对查询实际执行的操作是根据字段tags.id创建存储桶.
请记住,结果上的键将包含两个以"|"分隔的值 所以你可能不得不操纵它的值来提取你需要的所有信息.
| 归档时间: |
|
| 查看次数: |
6344 次 |
| 最近记录: |