sql - 如何将 “and or” where子句从sql查询转换为elasticsearch过滤器

标签 sql elasticsearch elastica

我的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);

什么也不返回。

请帮忙!

最佳答案

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

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

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

因为这个:
http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/complex-core-fields.html#_arrays_of_inner_objects

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

关于sql - 如何将 “and or” where子句从sql查询转换为elasticsearch过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24651542/

相关文章:

sql - 使用 table2、table3 合并到 Table1(多个条件)?缺少语法

mysql - 选择在 where 子句中找不到的 ID

php - 哪个数据库设计更好?

docker - ddev + elasticsearch的最新版本

mysql - 连接另一张表,但没有连接限制为一个

elasticsearch - AWS托管的Elasticsearch域中的完全节点故障

elasticsearch - Logstash MySQL 合并多行

php - symfony2.1 FOQElasticaBundle 类加载

symfony - foselasticabundle嵌套查询

php - PHP代码运行elasticsearch查询