我正在尝试撰写一个首先按_geo_distance
排序的查询,然后按price
或rating
排序。基本上,我想要达到的是具有最高评级/价格的最接近的结果。
以下是一个示例查询:
{
query: {
bool: {
must: [
{
bool: {
should: [
{
match_all: {
}
}
]
}
}
],
filter: [
{
bool: {
}
}
]
}
},
sort: [
{
_geo_distance: {
location: {
lat: 51.840191,
lon: 61.581038
},
order: 'asc',
unit: 'km',
distance_type: 'sloppy_arc'
}
},
{
rating: {
order: 'desc'
}
}
],
size: 10,
from: 0,
_source: [
'id',
'_score',
'location',
'price',
'rating'
]
}
问题是结果只包含最接近的结果,而且收视率和价格都很低。
我的问题是,是否可以以某种方式调整排序,还是应该附加function_score
查询来替换排序?