我想应用“距离条带”。我不希望仅按距离排序,而是首先获得5英里内的文件,然后是5-10英里的文件,然后是10-15英里,15-25英里,25-50英里,50英里。 (并且在每个距离范围内,它们将按照其他一些标准进行分类)。
我读过function_score decay,但我认为它不符合目的。
你会怎么建议去做?升压?
答案 0 :(得分:1)
实现此目的的一种方法是使用geo_distance
聚合来定义波段,然后在每个波段中使用top_hits
和一些排序标准。
看起来像这样。您需要更改位置字段(location
)和排序字段(name
)以匹配您的:
{
"size": 0,
"aggs": {
"rings": {
"geo_distance": {
"field": "location",
"origin": "52.3760, 4.894",
"ranges": [
{
"to": 5
},
{
"from": 5, "to": 10
},
{
"from": 10, "to": 15
},
{
"from": 15, "to": 25
},
{
"from": 25, "to": 50
},
{
"from": 50
}
]
},
"aggs": {
"hits": {
"top_hits": {
"size": 5,
"sort": {
"name": "asc"
}
}
}
}
}
}
}