首页 > 解决方案 > Elasticsearch javascript 文件无法加载

问题描述

我编写了一个 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"
                }
            }
        }

标签: javascriptfileelasticsearch

解决方案


推荐阅读