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