2
私はongr/elasticsearch-dslバンドルを使用してクエリを作成しています。私は同じ場所でそれをするとき、それは期待どおりに動作します。
use ONGR\ElasticsearchDSL\Search;
use ONGR\ElasticsearchDSL\Query\Compound\BoolQuery;
use ONGR\ElasticsearchDSL\Query\TermLevel\TermsQuery;
$search = new Search();
$bool = new BoolQuery();
$search->addQuery($bool);
$bool->add(new TermsQuery('id', [1]));
$bool->add(new TermsQuery('id2', [2]));
echo json_encode($search->toArray());
結果は次のようになります。
{"query":{"bool":{"must":[{"terms":{"id":[1]}},{"terms":{"id2":[2]}}]}}}
は今、私は別の方法に、検索オブジェクトを渡すと、私のTermQuery-オブジェクトを追加しませんしてみてください。
$search = new Search();
$bool = new BoolQuery();
$search->addQuery($bool);
$mapper->map($search);
//---
public function map(search) {
$bool = $search->getQueries();
$bool->add(new TermsQuery('id', [1]));
$bool->add(new TermsQuery('id2', [2]));
echo json_encode($search->toArray());
}
結果はほぼ同じですが、余分な空のBoolQueryがあります。
{"query":{"bool":{"must":[{"bool":[]},{"terms":{"id":[1]}},{"terms":{"id2":[2]}}]}}}
私は間違っていますか?または、検索を拡張してその空のクエリを避けるにはどうすればよいですか?
素晴らしいです!どうもありがとう! – Daniel