2

ネストされたフィールド値に基づいて、elasticsearch でクエリのスコアを計算したいと考えています。これが私のドキュメントの例です:

{
  "title": "Mr",
  "first_name": "Barry",
  "last_name": "White",
  "experiences": [
     {
       "name": "parachute",
       "values": {
           "last_year": 4,
           "older": 12
       }
    },
    {
       "name": "base jump",
       "values": {
           "last_year": 2,
           "older": 1
       }
    }
   ]
}

私が望むのは、経験の数と範囲に従ってクエリをフィルタリングしてランク付けすることです (昨年の値がより重要です)。問題は、フィルタリングされた経験値をどのように取得できるかです。

ここに私のクエリの簡略版があります:

{
"query" :{
    "nested": {
        "path": "experiences",
        "query":{
            "function_score" : {
                "functions": [
                    {
                        "filter": {"term": { "experiences.name": "parachute"} },
                        "script_score" : {
                            "script" : {
                              "lang": "painless",
                              "inline": "_score * doc['experiences.values.older'].value" //Here I want to get the "older" value of "parachute": 12
                            }
                        }
                    }
                ]
             }

        }
    }
}
}

これを解決する方法があることを願っています...

よろしくお願いいたします。

4

1 に答える 1