【发布时间】:2020-09-04 18:54:02
【问题描述】:
我正在开发一个查询,计算最近的文档包含多少个唯一的“cp”。 json 由几个嵌套字段组成。 当我添加到具有嵌套字段的 json 时,我无法仅显示具有最近日期的 json 值。 我已经完成了嵌套聚合,最后我使用了 top_hits 过滤器按降序排序,它通过大小返回最后一个。 但它仍然返回所有不同日期的文件。
JSON:
"data" : [
{
"addresses" : [
{
"cp" : "33.33.33",
"services" : [
{
"field1" : "true",
"field2" : "1234",
}
]
}
],
}
],
"created_at" : "2020-09-03 14:39:01",
"@timestamp" : "2020-09-04T05:53:22.341661Z",
}
},
查询:
{"size": 0,
"aggs": {
"nested": {
"nested": {
"path": "data.addresses"
},
"aggs": {
"nested": {
"nested": {
"path": "data.addresses.services"
},
"aggs": {
"filter": {
"filter": {
"term": {
"data.addresses.services.field1.keyword": "true"
}
},
"aggs": {
"unique": {
"cardinality": {
"field": "data.addresses.services.field2.keyword"
}
},
"range":{
"top_hits": {
"size": 1,
"sort": [
{"created_at.keyword": {"order": "desc"}}]
}
}
}
}
}
}
}
}
}
我尝试按预定义字段“created_at”或@timestamp 进行排序,但结果是一样的。 有什么建议可以帮助我解决问题吗?
【问题讨论】:
标签: elasticsearch