2016-05-30 6 views
0

私はいくつかの追加ルールの後に私のクエリ結果を並べ替えると同時に、私はそれらが作成日によってできるだけソートされたい場合、私はcreated_atソートを追加すると、すべてが変更され、私の結果はもう関連していません。だから私はそれを行う唯一の方法は、(最新のものは、そのブーストのスコアを計算することで最大のボーナスを持っています)created_atフィールドを向上させることですが、私はそれを実装する方法を知っていません。これは私の質問です:Elasticsearchで最も近いcreated_atフィールドを増やす方法はありますか?

query = { 
    "query" : { 
    "bool" : { 
     "must" : [ 
     { 
      "range" : { 
      "deadline" : { 
       "gte" : "2016-05-30T11:39:10+02:00" 
      } 
      } 
     }, 
     { 
      "terms" : { 
      "state" : [ 
       "open" 
      ] 
      } 
     }, 
     { 
      "query_string" : { 
      "query" : "chant", 
      "default_operator" : "AND", 
      "analyzer" : "search_francais", 
      "fields" : [ 
       "title^6", 
       "description", 
       "brand", 
       "category_name" 
      ] 
      } 
     } 
     ] 
    } 
    }, 
    "filter" : { 
    "and" : [ 
     { 
     "geo_distance" : { 
      "distance" : "40km", 
      "location" : { 
      "lat" : 48.855736, 
      "lon" : 2.32927300000006 
      } 
     } 
     } 
    ] 
    }, 
    "sort" : [ 
    { 
     "_score" : "desc" 
    }, 
    #{ 
    # "created_at" : "desc" ==> i tried this but it doesnt change results 
    #} 
    ] 
} 

答えて

0

あなたの条件を追加してみてください。

i)作成された日付が検索クエリに近づくはずである場合、または日付がどのくらい近いかを知っている場合は、範囲クエリを指定します。 ii)これらの値がすべてわからない場合は、減衰関数を使用できます。この場合、照会は機能照会に変更されるものとする。

{ 
    "query" : { 
    "bool" : { 
     "must" : [ 
     { 
      "range" : { 
      "deadline" : { 
       "gte" : "2016-05-30T11:39:10+02:00" 
      } 
      } 
     }, 
     { 
      "terms" : { 
      "state" : [ 
       "open" 
      ] 
      } 
     }, 
     { 
      "query_string" : { 
      "query" : "chant", 
      "default_operator" : "AND", 
      "analyzer" : "search_francais", 
      "fields" : [ 
       "title^6", 
       "description", 
       "brand", 
       "category_name" 
      ] 
      } 
     } 
     ], 
     "should": [ 
     {"created_at" : "condition here .. "} 
     ] 
    } 
    }, 
    "filter" : { 
    "and" : [ 
     { 
     "geo_distance" : { 
      "distance" : "40km", 
      "location" : { 
      "lat" : 48.855736, 
      "lon" : 2.32927300000006 
      } 
     } 
     } 
    ] 
    } 
} 
関連する問題