2017-06-13 7 views
2

は、私のような文書の集合を持っていると仮定します名前と都市。その後範囲クエリ

、私は結果のみが

"_score" :<Query Score Returned by ES> 

(たぶん範囲クエリ集約法による)1.2より大きい

に戻り、その後財産上の用語凝集法を適用するフィルタリングします: " 「型」を選択し、「top_hits」集計メソッドを使用して各バケットの上位結果を返します。 どうすればいいですか?

私は、検索クエリーから返されたスコアのRange Queryとは別にすべてを実装することができました。

+0

あなたは私たちにウルのマッピングを表示することができますことができますか? – user3775217

+0

私が与えたダミーデータは私のプロジェクトに使用している正確なデータではありませんが、あなたが提供する下のマッピングは、私が似たようなアナライザで使っているものです。私はちょうど標準のアナライザーである別の検索アナライザーを使用しています –

答えて

1

文書を有機的にスコアリングしたい場合は、照会でmin_scoreを使用してスコアに一致する文書をフィルタリングすることができます。 nグラムanalyerため

私は

マッピング

PUT index1 
{ 
    "settings": { 
    "analysis": { 
     "analyzer": { 
     "edge_n_gram_analyzer": { 
      "tokenizer": "whitespace", 
      "filter" : ["lowercase", "ednge_gram_filter"] 
     } 
     }, 
     "filter": { 
     "ednge_gram_filter" : { 
     "type" : "NGram", 
     "min_gram" : 2, 
     "max_gram": 10 
     } 
     } 
    } 
    }, 
    "mappings": { 
    "document_type" : { 
     "properties": { 
     "Name" : { 
      "type": "text", 
      "analyzer": "edge_n_gram_analyzer" 
     }, 
     "City" : { 
      "type": "text", 
      "analyzer": "edge_n_gram_analyzer" 
     }, 
     "Type" : { 
      "type": "keyword" 
     } 
     } 
    } 
    } 
} 

インデックスドキュメント

POST index1/document_type 
{ 
     "Name":"Random String 1", 
     "Type":"Keyword", 
     "City":"Lousiana", 
     "Quantity":"10" 
} 

クエリ

空白トークナイザと小文字のフィルタを追加しました
POST index1/_search 
{ 
    "min_score": 1.2, 
    "size": 0, 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "term": { 
      "Name": { 
       "value": "string" 
      } 
      } 
     }, 
     { 
      "term": { 
      "City": { 
       "value": "string" 
      } 
      } 
     } 
     ] 
    } 
    }, 
    "aggs": { 
    "type_terms": { 
     "terms": { 
     "field": "Type", 
     "size": 10 
     }, 
     "aggs": { 
     "type_term_top_hits": { 
      "top_hits": { 
      "size": 10 
      } 
     } 
     } 
    } 
    } 
} 

希望これは

+0

ここでは、静的な値としてmin_scoreを取りました。だから私が持っていたポイントは、私はドキュメントのスコアが何であるかは分からないし、それで返されたスコアで範囲クエリを実装したいと思っています。 ** _scoreを動的にフェッチし、クエリ内で参照できますか?** –