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

Другие вопросы по тегам