2
我在弹性搜索索引中创建了一个小数据集(目前只有8个项目)。PHP Elastica过滤搜索在预期时不返回结果
中的条目的结构如下
{
"value_a": "Foo",
"value_b": "Bar",
"value_c": "Baz"
}
在弹性搜索本然后如下所示(从直接查询我的弹性搜索端点截取):
{
"_index": "foo_bar_bazindex",
"_type": "foo_bar_baz",
"_id": "4",
"_score": 1,
"_source": {
"value_a": "Foo",
"value_b": "Bar",
"value_c": "Baz"
}
}
的值A,B的组合和c是独一无二的。
我想通过使用值a和b执行bool过滤搜索来查找“value_c”的值。
在我的代码我一直想这个如下:
$filter = new \Elastica\Filter\Bool();
$query = new \Elastica\Query();
$aFilter = new \Elastica\Filter\Term(['value_a' => "Foo"]);
$bFilter = new \Elastica\Filter\Term(['value_b' => "Bar"]);
$filter->addMust($aFilter);
$filter->addMust($bFilter);
$query->setFilter($filter);
$results = $this->bookingPeriodIndex->search($query)->getResults();
var_dump($results);
然而,这不返回任何结果(VAR转储输出空数组) - 通过直接发布此查询到服务器也可手动尝试此查询:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"term": {
"value_a": "Foo"
}
},
{
"term": {
"value_b": "Bar"
}
}
]
}
}
}
}
}
这也产生了没有结果 - 但是我希望它返回一个结果,因为我有如下条目:
{
"value_a": "Foo",
"value_b": "Bar",
"value_c": "Baz"
}
我错过了什么吗?这可能是由于小数据集?我们在代码库中的其他地方使用相同的Bool Filter Elastica查询,并且这些工作如预期的那样工作,但是我似乎无法从此索引中获取任何数据。
任何帮助,将不胜感激。