最近Solrから切り替えたばかりなので、私はelasticsearchの初心者です。現在、solrconfig から edismax クエリを変換して、elasticsearch で動作するようにしようとしています。
基本的に、一度に 2 つのフィールドで用語を検索したいので、次のクエリで終了しました。
{
"query": {
"dis_max": {
"queries": [
{
"match": {
"field_1": {
"query": "term1"
}
}
},
{
"match": {
"field_2": {
"query": "term1"
}
}
}
]
}
}
}
これは、単一の用語でうまく機能します。複数の用語の場合、各用語が見つかる必要はありません。ただし、この機能を実装する方法が見つかりませんでした。これが、 bool queryによって提供されるminimum_should_matchパラメータの目的です。
3 つの用語があり、そのうちの少なくとも 2 つを見つけたいとします。試行錯誤を経て、次のようなものを含む多くのバリアントをチェックしました。
{
"query": {
"dis_max": {
"queries": [
{
"match": {
"field_1": {
"query": "term1 term2 nonexistingterm",
"operator": "and",
"minimum_should_match": 2
}
}
},
{
"match": {
"field_2": {
"query": "term1 term2 nonexistingterm",
"operator": "and",
"minimum_should_match": 2
}
}
}
]
}
}
}
しかしminimum_should_match
、ここでは機能せず、and
演算子が原因で結果が見つかりません。or
結果を返すには1回のヒットで十分であるため、どちらでも機能しません。
誰かが私と組み合わせるdis_max
のを手伝ってくれますかminimum should match
?
これに関するドキュメントが見つからなかったので、elasticsearch でこれらの情報を自分で見つけることができるヒントをいただければ幸いです。