2017-04-27 19 views
1

full text searchElasticSearchとしています。私はQuery String Queryを使用しています。私はMulti Field機能で検索しています。ElasticSearch:複数のフィールドを持つquery_stringによる全文検索

私のクエリは以下のようになります。

{ 
    "query": { 
     "query_string": { 
      "fields": [ 
       "field1^5", 
       "field2^5", 
       "field3^1", 
       "field4^1", 
       ................... 
       ................... 
      ], 
      "query": "....", 
      "default_operator": "OR", 
      "analyzer": "standard" 
     } 
    } 
} 

私は私のコレクションに複数30 fieldsを持っています。私の要求では、まずfieldA,fieldBを検索する必要があります。したがって、これらのフィールドはhigher priorityになります。その他のフィールドはすべてlow and equal priorityです。

だから、私はspecify all the field names in the queryに何か方法がありますか?より高い優先度のフィールド、つまりfieldAfieldBを指定するだけです。しかし、検索は優先順位に基づいてすべてのフィールドで実行する必要があります。

これをどのように達成できますか?

+0

質問が分かりませんでした。 @oblivion –

+0

@DivyeshGausvami要するに、私は複数のフィールドでフルテキスト検索を実行したいと思う。これらのフィールドのうち、2つは非常に優先順位が高く、最初に一致させる必要があります。だから、クエリでは、私はそれらの2つのフィールドが高いブースト値を与えることによってのみ指定したい。これらの2つのフィールドがクエリに一致しない場合は、他のフィールドだけが一致する必要があります。ここでは、常にクエリのすべてのフィールドを指定する必要がありますか?クエリの優先度の低いフィールドをすべて一覧表示する必要はありません。 – oblivion

+0

'{ "クエリ":{ "multi_match":{ "クエリ": "検索文字列"、 "フィールド": "フィールド1"、 "フィールド2"、...、 "フィールドN"]} } } ' これはお役に立ちましたか?私は正しい? –

答えて

2

これで試してください。私のシステムでテストされて、私のために働いています: -

{ 
    "query": { 
     "query_string": { 
      "fields": [ 
       "field1^5", 
       "field2^5", 
       "_all", 
      ], 
      "query": "....", 
      "default_operator": "OR", 
      "analyzer": "standard" 
     } 
    } 
} 
+1

それは動作します。どうもありがとう !!私が尋ねたいもう一つのことは、 '' _all^1 '''のように '_all'にも優先順位を付ける必要があるということです。 – oblivion

+1

不要です。弾性検索によると、doc - "boost - クエリのブースト値を設定します。デフォルトは1.0です。" https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html –

+0

よろしくお願いします。ありがとう:) – oblivion

関連する問題