[解決済み] Elasticsearch 用語」「マッチフレーズ」「クエリストリング」の違いについて
質問
Elasticsearchは初めてで、これらのクエリの違いについて理解を深めたいと思っています。私が知る限りでは
term
は単一の用語にマッチし(マッチするためには小文字にする必要がある?
match phrase
と
query string
は文字列にマッチします。
どのように解決するのですか?
term
クエリはそのまま一つの用語にマッチします : 値は
分析されていない
.
つまり、インデックスされている内容によっては小文字にする必要はないのです。
もしあなたが
Bennett
を指定し、その値が解析されていない場合、次のクエリは何も返しません。
{
"query": {
"term" : { "user" : "bennett" }
}
}
match_phrase
クエリーは、クエリーされたフィールドにアナライザーが定義されている場合、入力を分析し、以下の条件に一致するドキュメントを見つけます。
- すべての用語 はフィールドに表示されなければなりません。
- を持つ必要があります。 同じ順序 入力値として
- 間に用語があってはならない、つまり連続していなければならない(ストップワードを除く可能性があるが、これは複雑な場合がある)。
例えば、次のような文書をインデックス化する場合 (
standard
アナライザでフィールド
foo
):
{ "foo":"I just said hello world" }
{ "foo":"Hello world" }
{ "foo":"World Hello" }
{ "foo":"Hello dear world" }
これは
match_phrase
クエリは、1番目と2番目のドキュメントだけを返します。
{
"query": {
"match_phrase": {
"foo": "Hello World"
}
}
}
query_string
クエリ検索は、デフォルトでは
_all
フィールドを検索します。これは複数のテキストフィールドのテキストを一度に含むものです。その上、解析され、いくつかの演算子(AND/OR...)やワイルドカードなどをサポートしています(詳しくは
関連構文
).
のように
match_phrase
のクエリでは、クエリされたフィールドに設定されたアナライザに従って入力が解析されます。
とは異なり
match_phrase
とは異なり、分析後に得られる用語は、ユーザーが入力の周りに引用符を使用しない限り、同じ順序である必要はありません。
例えば、先ほどと同じ文書を使った場合、このクエリはすべての文書を返します。
{
"query": {
"query_string": {
"query": "hello World"
}
}
}
しかし、このクエリでは、同じ 2 つのドキュメントが
match_phrase
クエリと同じ 2 つのドキュメントを返します。
{
"query": {
"query_string": {
"query": "\"Hello World\""
}
}
}
これらのクエリに対するさまざまなオプションについては、さらに多くのことが語られています。関連するドキュメントを参照してください。
これが十分に明確で、助けになることを願っています。
関連
-
SpringBootとElasticsearchの連携
-
Elasticsaerch起動エラー。スレッド "main" で例外発生 java.nio.file.AccessDeniedException:
-
Elasticsearch がエラーで実行される:java.lang.ClassCastException: org.joda.time.DateTime は org.elastic にキャストできない。
-
[解決済み] 全レコードを返すElasticsearchクエリ
-
[解決済み] elasticsearchが特定のフィールドのみを返すようにするか?
-
[解決済み] ElasticSearchからデータを削除する
-
[解決済み] Elasticsearchのシャードとレプリカ
-
[解決済み] タイプを削除せずにインデックス/タイプからすべてのドキュメントを削除する
-
[解決済み] Elasticsearch では Content-Type ヘッダ [application/x-www-form-urlencoded] はサポートされていません。
-
[解決済み] Elasticsearch 用語」「マッチフレーズ」「クエリストリング」の違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Elasticsaerch起動エラー。スレッド "main" で例外発生 java.nio.file.AccessDeniedException:
-
Elasticsearch がエラーで実行される:java.lang.ClassCastException: org.joda.time.DateTime は org.elastic にキャストできない。
-
[解決済み] elasticsearchが特定のフィールドのみを返すようにするか?
-
[解決済み] ElasticSearchからデータを削除する
-
[解決済み] Elasticsearchのシャードとレプリカ
-
[解決済み] タイプを削除せずにインデックス/タイプからすべてのドキュメントを削除する
-
[解決済み] Elasticsearch では Content-Type ヘッダ [application/x-www-form-urlencoded] はサポートされていません。
-
[解決済み] Elasticsearchと標準的なSQLクエリを比較した場合のユースケースは?[クローズド]
-
[解決済み] Elasticsearch 用語」「マッチフレーズ」「クエリストリング」の違いについて
-
[解決済み] ElasticSearchで単語の一部を検索する方法