はじめに
Elasticsearchを使っていて、もやもやした内容を、
メモ書きレベルで、思うがまま書いてみます。
minimum_should_match
パラメータとは
複数キーワードを使って検索を行う際、
最低何個以上のキーワードがマッチしたら検索ヒットとみなすか
を指定するためのパラメータ。
このminimum_should_match
のデフォルト値が、
クエリによって変わってしまうので、モヤモヤ感が。。。
If the bool query includes at least one should clause and no must or filter clauses,
the default value is 1. Otherwise, the default value is 0
minimum_should_match
のデフォルト値を確認してみた
- ドキュメントを登録
PUT /my_index/_doc/1
{
"user_name": "太郎",
"date": "2022-10-01T10:00:00",
"message": "Hello, Elasticsearch"
}
-
bool
クエリにshould
句のみ含まれている場合-
minimum_should_match
のデフォルト値は1
- いずれの検索ワードも含まれていないため、結果
ヒットしない
-
GET /my_index/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"message": "keyword1"
}
},
{
"match": {
"message": "keyword2"
}
}
]
}
}
}
-
bool
クエリに、must
句とshould
句が含まれている場合-
minimum_should_match
のデフォルト値は0
-
should
でいずれの検索ワードも含まれていなくても、結果ヒット
する
-
GET /my_index/_search
{
"query": {
"bool": {
"must": {
"match": {
"message": "Elasticsearch"
}
},
"should": [
{
"match": {
"message": "keyword1"
}
},
{
"match": {
"message": "keyword2"
}
}
]
}
}
}
おわりに
minimum_should_match
のデフォルト値についてでした。
Elasticsearchバージョンにより挙動が変わるので(7.0を境に)、
気を付けたいところです。