LINUX.ORG.RU

История изменений

Исправление 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]
          }
        }
      }
    }
  }

Как-то так