2017-11-23 4 views
0

私はの2つのアプローチをElasticsearchのに見つけました。それらのどれを選ぶのですか?彼らは同じ行動を取っているようです。それとももっと良いものがありますか?ElasticsearchワイルドカードVSクエリーストリング

QUERY_STRING:

"query": { 
"bool": { 
    "filter": [ 
    { 
     "query_string": { 
     "query": "*quick*", 
     "fields": [ 
      "text" 
     ] 
     } 
    } 
    ] 
} 
} 

ワイルドカード:

"query": { 
"bool": { 
    "must": [ 
     { 
      "wildcard": { 
       "text": "*quick*" 
      } 
     } 
    ] 
} 
} 

SQLは、私が考えるWHERE text like '%quick%'

答えて

1

だろう、違いは、フィルタクエリに何のスコアが計算されていないこと、です。ドキュメント内: フィルタコンテキストでは、クエリ句は「このドキュメントがこのクエリ句に一致しますか?」という質問に答えます。答えは単純かどうかです。スコアは計算されません。

ワイルドカードクエリを使用します。そこに*を使用することができますより多くの文字と?あなたの必要性に応じて、1人のキャラクターだけになります。そして、ここでスコアが計算されます。

+0

スコアを必要とせず、elasticsearch-serverの負荷を低く抑えたい場合は、_filter_を使用する方が良いでしょうか? – Toshi

+0

はい。私はこれをドキュメントから理解しています。 – Ohlsen1980

+0

あなたの応答をタンク – Toshi

関連する問題