ElasticsearchDSL 构建器如何创建不应该查询
ElasticsearchDSL builder how to create SHOULD NOT query
使用 php dsl 生成器,我正在尝试创建一个 SHOULD NOT
查询。使用 json 查询语法,您可以将 MUST_NOT
嵌套在 SHOULD
布尔值中以创建一个。
例子
{"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);
但这不起作用。
为了嵌套 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);
使用 php dsl 生成器,我正在尝试创建一个 SHOULD NOT
查询。使用 json 查询语法,您可以将 MUST_NOT
嵌套在 SHOULD
布尔值中以创建一个。
例子
{"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);
但这不起作用。
为了嵌套 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);