ElasticsearchDSL конструктор, как создать НЕ ДОЛЖЕН запрашивать

Используя php dsl builder, я пытаюсь создать SHOULD NOT запрос. Используя синтаксис запроса json, вы можете вложить MUST_NOT в пределах SHOULD bool, чтобы создать один.

пример

{"bool": {"should": { "bool": {"must_not": {"match": {"thing": "thingy"}}}}}}

Читая документацию по ongr, неясно, как добиться того же результата, что и после выпуска обновления 5.0. Я пробовал следующее:

$search = new Search();
$query = new MatchQuery('thing', 'thingy');
$search->addQuery($query, BoolQuery::MUST_NOT);
$search->addPostFilter(BoolQuery::SHOULD);

но это не работает

1

Решение

Чтобы вложить запросы bool, вам нужно использовать запросы bool :). Приведенный вами пример можно получить с помощью следующего фрагмента кода:

$search = new Search();
$outerBoolQuery = new BoolQuery();
$innerBoolQuery = new BoolQuery();
$innerBoolQuery->add(new MatchQuery('thing', 'thingy'), BoolQuery::MUST_NOT);
$outerBoolQuery->add($innerBoolQuery, BoolQuery::SHOULD);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]