2017-02-23 13 views
1

php dsl 빌더를 사용하여 SHOULD NOT 쿼리를 작성하려고합니다. json 쿼리 구문을 사용하면 을 SHOULD bool 내에 중첩하여 만들 수 있습니다.ElasticsearchDSL builder 작성 방법 NOT

{"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); 

그러나 그것은 작동하지 않는다. 둥지 위해

답변

2

부울 쿼리, 당신은 부울 쿼리를 사용해야합니다 :) 제공 한 예는이 코드 조각을 달성 할 수 있습니다

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