【发布时间】:2014-06-17 19:28:45
【问题描述】:
如何仅对对象属性运行聚合查询,但在结果中获取所有属性?例如我想得到[{'doc_count': 1, 'key': {'id': 1, 'name': 'tag name'}}],但得到了[{'doc_count': 1, 'key': '1']。字段“标签”的聚合返回零结果。
映射:
{
"test": {
"properties" : {
"tags" : {
"type" : "object",
"properties": {
"id" : {"type": "string", "index": "not_analyzed"},
"name" : {"type": "string", "index": "not_analyzed", "enabled": false}
}
}
}
}
}
聚合查询:(按预期仅返回 ID,但如何在结果中获取 ID 和名称对?)
'aggregations': {
'tags': {
'terms': {
'field': 'tags.id',
'order': {'_count': 'desc'},
},
}
}
编辑:
通过在 "script": "_source.tags" 上聚合获得 ID 和名称,但仍在寻找更快的解决方案。
【问题讨论】:
-
您找到更快的解决方案了吗?出于性能原因,我不想依赖
_sourceobj。 -
@Benjamin Smith,不,我没有,如果你愿意,请告诉我。
-
标签名不是唯一的吗?为什么需要身份证?老实说,我会在这里重新考虑数据设计。