2017-02-23 48 views
1

使用php dsl構建器,我試圖創建一個SHOULD NOT查詢。使用json查詢語法,您可以在SHOULD布爾中嵌套MUST_NOT以創建一個。ElasticsearchDSL構建器如何創建不應該查詢

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