簡體   English   中英

Elasticseach 將 sql 更改為使用 ONGR\ElasticsearchDSL 進行查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM