У меня есть этот относительно сложный поисковый запрос, который уже создается и работает с идеальной сортировкой.
Но я думаю, что поиск здесь медленный только из-за сценария, поэтому все, что я хочу, чтобы удалить сценарий и написать запрос соответственно.
текущий код: -
"sort": [
{
"_script": {
"type": "number",
"script": {
"lang": "painless",
"source": "double pscore = 0;for(id in params.boost_ids){if(params._source.midoffice_master_id == id){pscore = -999999999;}}return pscore;",
"params": {
"boost_ids": [
3,
4,
5
]
}
}
}
},
{
"_geo_distance": {
"location": {
"lat": -8.435345,
"lon": 103.184316
},
"order": "asc"
}
}
]}
Выше приведено объяснение кода: -
ДляНапример, если запрос соответствия emtpy даст результат, подобный следующему:
[{id: 1}, {id: 2}, {id: 3}, {id: 4}, {id: 5}, ...]
Итак, здесь я реализовал сортировку, в которой есть скрипт, который принимает массив, а затем из массива, если любой элемент, соответствующий идентификатору искомого результата, получит повышение иотображаются сверху с минимальным расстоянием (которое рассчитывается с помощью запроса geo_distance)
Как и в случае массива обеспечения [3, 4, 5], который затем преобразовал бы результат в:
[{id: 3}, {id: 4}, {id: 5}, {id: 1}, {id: 2}, ...]
Пожалуйста, помогите мнес этой ситуацией.
Заранее спасибо.:)