我想申请“距离分带”。我不只是简单地按距离排序,我希望5英里以内的文档优先,然后是5-10英里的文档,然后是10-15英里,15-25英里,25-50英里,50+mi。(在每个距离范围内,它们将按照其他一些标准进行排序)。
我读过关于function_score衰变的文章,但我认为它不太符合目的。
你建议怎么做呢?助推?
发布于 2016-03-10 04:49:25
实现这一目标的一种方法是使用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"
}
}
}
}
}
}
}https://stackoverflow.com/questions/35904662
复制相似问题