История изменений
Исправление Deleted, (текущая версия) :
// curl -H 'Content-Type: application/json' -XPOST 'http://host:9200/index/_search?pretty=true'
{
"query": {
"function_score": {
"boost_mode": "replace",
"script_score": {
"script": {
"lang": "painless",
"source": "double distance = 0; double diff = 0; List feature = params._source.feature; for(int j = 0; j < feature.size(); j++){diff = feature[j] - params.query_feature[j]; distance = distance + (diff*diff);} return Math.sqrt(distance)",
"params": {
"query_feature": [0.0....0.0]
}
}
}
}
}
Как-то так, это кусок запроса. Он основан на https://discuss.elastic.co/t/problem-computing-euclidean-distance-using-script-score-query/148823 - но там автор вляпался в сортировку массивов и не докумекал, что ему мешает, всего-то надо было params._source.feature;
использовать.
Исходная версия Deleted, :
// curl -H 'Content-Type: application/json' -XPOST 'http://host:9200/index/_search?pretty=true'
{
"query": {
"function_score": {
"boost_mode": "replace",
"script_score": {
"script": {
"lang": "painless",
"source": "double distance = 0; double diff = 0; List feature = params._source.feature; for(int j = 0; j < feature.size(); j++){diff = feature[j] - params.query_feature[j]; distance = distance + (diff*diff);} return Math.sqrt(distance)",
"params": {
"query_feature": [0.0....0.0]
}
}
}
}
}
Как-то так