У меня есть 3 разных поисковых запроса из разных источников, я хочу объединить эти запросы в один запрос, который вернет результаты, которые являются объединением этих 3 запросов (операция ИЛИ для запроса)
Для пример:
Запрос 1:
query: {
bool: {
filter: [
{ terms: { tags.keyword: ['apple', 'banana'] }},
{ terms: { language.keyword: ['en'] }},
]
}
}
Запрос 2:
query: {
bool: {
filter: [
{ terms: { tags.keyword: ['orange', 'mango'] }},
{ terms: { language.keyword: ['it'] }},
{ terms: { source.keyword: ['Royal Garden'] }},
]
}
}
Запрос 3:
query: {
bool: {
filter: [
{ terms: { owner.keyword: ['Dan Chunmun'] }},
{ terms: { language.keyword: ['en'] }},
{ terms: { source.keyword: ['Royal Garden'] }},
]
}
}
Что нужно искать результат:
Результат = Запрос 1 ИЛИ Запрос 2 ИЛИ Запрос 3 (Объединение всех 3 запросов)
Я смотрел Как объединить несколько bool запросы в elasticsearch вопрос, но там не объясняется, как объединить запрос. Я попытался использовать предложение should
, но пока не смог получить ожидаемый результат.
Я попытался объединить bool
часть запросов выше, например:
const boolTerms: any = [];
Queries.map(q => {
return boolTerms.push(q.query);
});
// combined query
filter : {
bool: {
should: boolTerms
}
}