我尝试使用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做到这一点?
答案 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);