我有一组文档,这些文档都包含一系列带有重要数据的嵌套对象。我想对这些进行聚合,这会返回第一个文档,最后一个文档以及该组中的所有嵌套对象。除了嵌套对象之外,我可以实现该列表中的所有内容。
映射:
"instances": {
"properties": {
"aggField": {
"type": "string",
"index": "not_analyzed"
},
"id": {
"type": "integer"
},
"nestedObjs": {
"type": "nested",
"properties": {
"key": {
"type": "string",
"index": "not_analyzed"
},
"value": {
"type": "integer"
}
}
},
"timestamp": {
"type": "date",
"format": "dateOptionalTime"
}
}
}
查询:
{
"size" : 0,
"aggs" : {
"agg-buckets" : {
"terms" : {
"field" : "aggField",
"size" : 10
},
"aggs": {
"last-report": {
"top_hits": {
"sort": [
{
"timestamp": {
"order": "desc"
}
}
],
"size": 1
}
},
"first-report": {
"top_hits": {
"sort": [
{
"timestamp": {
"order": "asc"
}
}
],
"size": 1
}
},
"nested-objs": {
"nested": {
"path": "nestedObjs",
"inner_hits": {}
}
}
}
}
}
但这失败了:
解析失败[[nested-objs]中的意外标记START_OBJECT。]
如果我删除“inner_hits”字段,它可以正常工作。但它只是给我文件计数而不是文件本身。
我做错了什么?
E:我正在使用ES版本1.7.1
答案 0 :(得分:0)
您确定inner_hits
聚合中允许nested
(而不是nested
查询)吗?我怀疑这是造成错误的原因。