我已经建立了这个相对复杂的搜索查询,并且可以进行完美的排序。
但是我认为这里由于脚本的原因搜索很慢,所以我想删除脚本并相应地编写查询。
当前代码:-
"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"
}
}
] }
以上代码说明:-
例如,如果一个空匹配查询将给出如下结果:
[{id: 1}, {id: 2}, {id: 3}, {id: 4}, {id: 5}, ...]
因此,我在这里实现了排序,该脚本具有以下脚本:从数组中获取脚本,然后从数组中查找与搜索结果的ID相匹配的任何元素,并以最小距离(由geo_distance查询计算得出)显示在顶部
就像提供数组[3,4,5]一样,它将结果转换为:
[{id: 3}, {id: 4}, {id: 5}, {id: 1}, {id: 2}, ...]
在这种情况下请帮助我。
先谢谢了。 :)