Я написал функцию javascript, которая вычисляет ближайшее расстояние между одной точкой с несколькими местоположениями и помещает ее в /etc/elasticsearch/scripts/my_file.javascript и использую script mode
для выполнения этой функции в elasticsearch
, но, к сожалению,, Я получаю сообщение об ошибке.
u'search_phase_execution_exception ', u'script_score: скрипт не может быть загружен'
Любой может помочь мне!Заранее спасибо
Вот код в моем файле скрипта
(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;
}) ();
и вот часть всего кода, который я использую для вызова своего скриптафайл
search_term["query"]["function_score"] = {
"query": {
"bool": bool_filter,
},
"script_score": {
"script": {
"file": "my_file",
"lang": "javascript"
}
}
}