SQL フィールドのあいまい一致検索

ESでは、SQLのフィールドに対するあいまい検索を実現するためにワイルドカードクエリを使用できます。ワイルドカードクエリでは、*(0個以上の文字にマッチ)と?(1文字にマッチ)の2つのワイルドカードをサポートします。例を以下に示します。

「message」フィールドにインデックスがある場合に、あいまい照合クエリを実行したい場合、ESはこのようなクエリ構文を使用できます。

{
"query": {
"wildcard": {
"message": "keyword*"
}
}
}

上記クエリは、”キーワード”で始まるすべての文字列に一致します。例えば “キーワード1″、”キーワード2” など。

「word」で終わる文字列に一致させたい場合は、次のクエリステートメントを使用します。

{
"query": {
"wildcard": {
"message": "*word"
}
}
}

上記のクエリは「word」で終わる全ての文字列、例えば「keyword」や「sword」などにマッチします。

ワイルドカードクエリは、特にクエリの先頭に使った場合は、性能に影響が出ることに注意することが必要です。この場合、ESはすべてのインデックスをスキャンして、マッチングさせる必要があるためです。従って、可能であれば、句クエリや正規表現クエリなどのより効率的なクエリの方法を利用することを推奨します。

bannerAds