[英]Collapse results based on the maximum or mininum value
我有这种格式的数据。
[
{
lead_id: "lead_1",
value: 34
},
{
lead_id: "lead_1",
value: 22
},
{
lead_id: "lead_1",
value: 67
},
{
lead_id: "lead_2",
value: 12
},
{
lead_id: "lead_2",
value: 9
},
{
lead_id: "lead_3",
value: 22
},
{
lead_id: "lead_3",
value: 5
}
]
我想根据desc
或asc
顺序的值对线索进行排序。 另外,我需要折叠结果。 我使用这样的查询进行排序。
{
"collapse": {
"field": "lead_id"
},
"sort": {
"value": { "order": "asc" }
}
}
但我想根据maximum
进行排序。 即,如果我按asc
排序,我希望结果为:
[
{
lead_id: "lead_2",
value: 12
},
{
lead_id: "lead_3",
value: 22
},
{
lead_id: "lead_1",
value: 67
}
]
和下降
[
{
lead_id: "lead_1",
value: 67
},
{
lead_id: "lead_3",
value: 22
},
{
lead_id: "lead_2",
value: 12
}
]
collapse_sort 作为一项功能尚不可用。 有一个开放的PR ,所以它可能在将来可用。
解决方法是使用 inner_hits
{
"collapse": {
"field": "lead_id.keyword",
"inner_hits": {
"name": "most_recent",
"size": 1,
"sort": [ { "value": "desc" } ]
}
},
"sort": {
"value": {
"order": "asc"
}
}
}
结果
"hits" : [
{
"_index" : "index11",
"_type" : "_doc",
"_id" : "xAugp4MBfEI_j4sNVw3V",
"_score" : null,
"_source" : {
"lead_id" : "lead_3",
"value" : 5
},
"fields" : {
"lead_id.keyword" : [
"lead_3"
]
},
"sort" : [
5
],
"inner_hits" : { --> group sorted values
"most_recent" : {
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : null,
"hits" : [
{
"_index" : "index11",
"_type" : "_doc",
"_id" : "wwugp4MBfEI_j4sNTw1c",
"_score" : null,
"_source" : {
"lead_id" : "lead_3",
"value" : 22
},
"sort" : [
22
]
}
]
}
}
}
},
{
"_index" : "index11",
"_type" : "_doc",
"_id" : "wgugp4MBfEI_j4sNSA00",
"_score" : null,
"_source" : {
"lead_id" : "lead_2",
"value" : 9
},
"fields" : {
"lead_id.keyword" : [
"lead_2"
]
},
"sort" : [
9
],
"inner_hits" : {
"most_recent" : {
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : null,
"hits" : [
{
"_index" : "index11",
"_type" : "_doc",
"_id" : "wQugp4MBfEI_j4sNQg3t",
"_score" : null,
"_source" : {
"lead_id" : "lead_2",
"value" : 12
},
"sort" : [
12
]
}
]
}
}
}
},
{
"_index" : "index11",
"_type" : "_doc",
"_id" : "vwugp4MBfEI_j4sNNw0q",
"_score" : null,
"_source" : {
"lead_id" : "lead_1",
"value" : 22
},
"fields" : {
"lead_id.keyword" : [
"lead_1"
]
},
"sort" : [
22
],
"inner_hits" : {
"most_recent" : {
"hits" : {
"total" : {
"value" : 3,
"relation" : "eq"
},
"max_score" : null,
"hits" : [
{
"_index" : "index11",
"_type" : "_doc",
"_id" : "wAugp4MBfEI_j4sNPQ3F",
"_score" : null,
"_source" : {
"lead_id" : "lead_1",
"value" : 67
},
"sort" : [
67
]
}
]
}
}
}
}
]
父文档仍将按照一般排序对值进行排序。 可以从内部命中中选取组排序值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.