使用Elastica QueryBuilder进行简单匹配查询

时间:2017-03-13 16:54:32

标签: elasticsearch elastica foselasticabundle

我尝试使用PHP在ElasticSearch中执行简单的匹配值请求 - Elastica库(FosElasticaBundle)。但是什么都没有。你有没有想法正确运行这种代码:

$match = new Match();
$match->setFieldQuery('product.price', 2);
$match->setFieldOperator('product.price', 'AND');
$query->setQuery($match);

我也在尝试这种形式:

   $boolQuery = new \Elastica\Query\BoolQuery();
   $fieldQuery = new \Elastica\Query\Match();
   $fieldQuery->setFieldQuery('age', 'I am a title string');
   $fieldQuery->setFieldParam('age', 'analyzer', 'my_analyzer');
   $boolQuery->addShould($fieldQuery);
   $query = $boolQuery;
   return $this->find($query);

没有错误返回但没有结果。我只是想要这种要求

SELECT * FROM product WHERE price = 2;

如何使用FosElasticaBundle做到这一点?

1 个答案:

答案 0 :(得分:1)

可能不是更简便的方法,但是它可以工作(您肯定找到了一种方法):

$price = new \Elastica\Query\Match();
$price->setField("price","2");
$product = new \Elastica\Query\Match();
$product->setField("_index","product");

$boolQuery = new \Elastica\Query\BoolQuery();
$boolQuery->addMust([$price, $product]);
$query = new \Elastica\Query($boolQuery);