私はあなたのデータがすでにそのように索引付けされていると仮定nite
しout
ますnite out
.
これを行う方法の 1 つは、Match Queryを使用することです。Match クエリは、アナライザーを使用して、fuzziness
探しているものを取得します。この特定のケースでは、空白アナライザーを使用して、探している結果を取得できます。クエリを見て、nite out
それを と に分割しnite
ますout
。次に、一致クエリはこれら 2 つのトークンを検索し、関連性に基づいてスコアを付けます。nite out
両方として分析された文書は、単独または単独で分析された文書よりも高いスコアを持ちnite
ます。out
nite
out
動的マッピングを使用した 3 つのドキュメントの例を次に示します。
ドキュメントにインデックスを付けます:
PUI {"value":"out"}
PUT {"value":"nite"}
PUT {"value":"nite out"}
次に、クエリを作成します。
GET _search
{
"query": {
"match": {
"value": {
"query": "nite out",
"analyzer": "whitespace"
}
}
}
}
実際にはここで空白アナライザーを指定する必要はありません。実際には、その行 (および前のコンマ) を完全に削除するだけで済みます。一致クエリは、インデックス時にクエリを実行しているフィールドで使用されるアナライザーに対してクエリ テキストを実行します。この場合、テキストを と に分割するのは標準のアナライザーnite
ですout
。
結果:
"hits": [
{
"_index": "test",
"_type": "test",
"_id": "1",
"_score": 0.2712221,
"_source": {
"value": "nite out"
}
},
{
"_index": "test",
"_type": "test",
"_id": "2",
"_score": 0.04500804,
"_source": {
"value": "nite"
}
},
{
"_index": "test",
"_type": "test",
"_id": "3",
"_score": 0.04500804,
"_source": {
"value": "out"
}
}
]
このリンクを読んで、elasticsearch のさまざまな検索メカニズムについて学ぶことをお勧めします。