我编写了一个javascript函数,该函数计算具有多个位置的一个点之间的最近距离,并将其放入/etc/elasticsearch/scripts/my_file.javascript,并使用script mode
在{{1}中执行此功能},但不幸的是,我得到一个错误。
u'search_phase_execution_exception',u'script_score:脚本无法加载'
任何人都可以帮助我!预先感谢
这是我的脚本文件中的代码
elasticsearch
})();
这是我用来调用脚本文件的全部代码的一部分
(function(){
var i, locations, arcDist, closest, distance;
arcDist = function( lat1, lat2, lon1, lon2 ){
var R = 6371 // earth radius
, CI = 0.017453292519943295 // pi/180
, dLat = (lat2-lat1) * CI / 2
, dLon = (lon2-lon1) * CI / 2
, sinDLat = Math.sin(dLat)
, sinDLon = Math.sin(dLon)
, a = sinDLat*sinDLat + sinDLon*sinDLon * Math.cos(lat1*CI)*Math.cos(lat2*CI)
, c = 2*Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
return R * c;
}
locations = doc["locations"].getValues();
closest = arcDist( lat, locations[0].lat(), lon, locations[0].lon() );
for( i=1; i < locations.length; i++ ) {
distance = arcDist( lat, locations[i].lat(), lon, locations[i].lon() );
if(distance < closest) {
closest = distance;
}
}
return closest;