Elastic Search пусто `должен` возвращать результаты
Я бегу should
запрос с любым пустым списком по индексу. Я ожидаю, что он вернет 0 результатов, так как нет should
запросы / фильтры для сопоставления с:
(Синтаксис Chewy, но довольно близок к обычному ES)
OrganizationsIndex.filter(
bool: {
must: [
{
bool: {
should: [],
minimum_should_match: 1
}
}
]
})
Однако он возвращает все документы в индексе. Это ожидаемое поведение? Есть ли способ, которым я мог бы сделать should: []
всегда возвращать 0 документов?
1 ответ
Это поведение было изменено в версии 1.3.3 Elasticsearch. Раньше пустое предложение should обрабатывалось как несоответствие, а впоследствии, как было упомянуто @Val, оно стало match_all
запрос.
Из обсуждения вопроса:
Когда запрос только с bool {} выполняется сам по себе, пустое предложение bool в этом случае не выбрасывает NPE и обрабатывается как допустимый запрос, за исключением того, что он не возвращает никаких документов (когда он действительно должен возвращать match_all):
Ссылка на этот выпуск GitHub - https://github.com/elastic/elasticsearch/issues/7240