[英]Elasticseach change sql to Query with ONGR\ElasticsearchDSL
我正在嘗試將 mysql-query 轉換為 Elasticsearch 的查詢,但我認為我走錯了路。
mysql 查詢如下所示:
WHERE foo = 0 OR (foo = 1 AND bar LIKE "%blub%")
Elasticseach-query 的創建方式如下:
$fieldFoo = 'attributes.core.foo.raw';
$fieldBar = 'attributes.core.bar.raw';
$firstQuery = new BoolQuery();
$firstQuery->add(new TermQuery($fieldBar, "0"), BoolQuery::SHOULD);
$secondQuery = new BoolQuery();
$secondQuery->add(new WildcardQuery($fieldFoo, "*" . $value . "|*"));
$secondQuery->add(new TermQuery($fieldBar, "1"));
$firstQuery->add($secondQuery, BoolQuery::MUST);
$search->addQuery($query);
但這一個不起作用。 接下來我可以嘗試什么?
以下解決方案現在有效:
$fieldFoo = 'attributes.core.foo.raw';
$fieldBar = 'attributes.core.bar.raw';
$query = new BoolQuery();
$firstQuery = new BoolQuery();
$firstQuery->add(new TermQuery($fieldBar, "0"), BoolQuery::SHOULD);`enter code here`
$secondQuery = new BoolQuery();
$secondQuery->add(new WildcardQuery($fieldFoo, "*" . $value . "|*"), BoolQuery::SHOULD);
$secondQuery->add(new TermQuery($fieldBar, "1"), BoolQuery::SHOULD);
$firstQuery->add($secondQuery, BoolQuery::SHOULD);
$query->add($firstQuery, BoolQuery::MUST);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.