我们在弹性搜索中有以下文件:
[
{
"price" : "95",
"relevance" : 5
},
{
"price" : "105",
"relevance" : 7
},
{
"price" : "92",
"relevance" : 3
},
{
"price" : "82",
"relevance" : 1
},
{
"price" : "89",
"relevance" : 9
}
]
我们希望根据价格(含桶)对其进行排序,然后根据这些桶内的相关性,即10s桶中的排序价格,以便输出:
[
{
"price" : "105",
"relevance" : 7
},
{
"price" : "95",
"relevance" : 5
},
{
"price" : "92",
"relevance" : 3
},
{
"price" : "89",
"relevance" : 9
},
{
"price" : "82",
"relevance" : 1
}
]
首先,我们将每个价格除以10,并按部门的int部分创建桶(我们将得到桶- 9、10、8),在对桶进行排序之后,=>将是带有(10、9、8)的文档。然后根据相关性对这些桶中的文档进行排序。
发布于 2019-08-19 13:33:15
以下查询应如您所期望的那样工作:
POST index/_search
{
"size": 0,
"aggs": {
"prices": {
"terms": {
"script": "doc.price.value / 10",
"order": {
"max_price": "desc"
}
},
"aggs": {
"max_price": {
"max": {
"field": "price"
}
},
"docs": {
"top_hits": {
"size": 5,
"sort": {
"relevance": "desc"
}
}
}
}
}
}
}
https://stackoverflow.com/questions/57556048
复制相似问题