Я борюсь с написанием эластичного поискового запроса с несколькими условиями И / ИЛИ.
Это в основном сводится к следующей логике:
cond1 && (cond2 || cond3 || cond4)
Как упомянуто в документах , документ считается совпадающим, если он удовлетворяет только условию must. Положения must в этом случае действуют как импульс, т. Е. Если документ соответствует одному или нескольким пунктам must в дополнение к условию must, он будет иметь более высокий показатель релевантности, если предположить, что cond2, cond3 и cond4 являются запросами, которые вычисляют оценка релевантности.
Проблема в том, что мне нужны только документы, которые также соответствуют хотя бы одному из условий ИЛИ.
Обратите внимание, что я использую ES6.3. Я также пробовал Запросы с несколькими словами , но эти результаты также неверны.
Добавление boost , похоже, не влияет на результаты, у меня есть результаты, которые соответствуют только первому условию.
{
"query": {
"bool": {
"must": [
{
"term": {
"event.keyword": {
"value": "webhook.trigger"
}
}
}
],
"should": [
{
"match": {
"metaData.webhook.title": "My Example Title 1"
}
},
{
"match": {
"metaData.webhook.title": "Testing"
}
},
{
"match": {
"metaData.webhook.url": "myurl.com"
}
}
]
}
}
}