0

我的 SQL 查询中有一个 WHERE 子句,必须将其转换为 elasticsearch bool 过滤器。

这是 where 子句:

WHERE (
option = "weight" AND value = "50kg"
)
OR (
option = "weight" AND value = "500kg"
)
AND (
option = "magic" AND value = "no"
)

我已经为查询的内部 AND 编写了 AND 过滤器,但现在我需要将它们放入 bool 过滤器。

试着:

$boolFilter = new \Elastica\Filter\Bool();
$boolFilter->addShould($innerFilterAnd1);
$boolFilter->addShould($innerFilterAnd2);
$boolFilter->addMust($innerFilterAnd3);

什么都不返回。

请帮忙!

4

1 回答 1

1

谢谢“大家”,但我自己想出了解决方案。您可以使用以下要点测试案例:

GIST 与我的搜索查询: https ://gist.github.com/ArFeRR/f69ebe24ddc543b7bffd

所以。如果要按嵌套对象进行过滤,则必须将其指定为“类型:对象”而不是“类型:嵌套”。

正因为如此: http ://www.elasticsearch.org/guide/en/elasticsearch/guide/current/complex-core-fields.html#_arrays_of_inner_objects

(嵌套类型存储为数组,对象类型存储为对象)

于 2014-07-14T15:09:16.180 回答