【发布时间】:2020-01-10 09:55:37
【问题描述】:
我正在尝试将 MySQL 搜索条件转换为 Eleasticsearch(版本 7)查询,但是,两个查询(MySQL 和 Elasticsearch)给出了不同的结果。在 SQL 语句上,它显示了一条记录,而在 Elasticsearch 上,它显示了 0 条记录。非常感谢任何帮助或指导。
SQL 条件
COUNT(*) WHERE (document_title like '%never listened%' or document_content like '%never listened%') and documnent_tone = 'negative'
转换为 Elasticsearch - 使用 PHP Elasticsearch 库
use Elasticsearch\ClientBuilder;
...
$elasticServer = $this->getOption('elasticsearch')->getElasticServer1();
$hosts = array(
$elasticServer['host'] . ':' . $elasticServer['port']
);
$client = ClientBuilder::create()
->setHosts($hosts)
->build();
$params = array (
"index" => "index_politics",
"body" => array(
"query" => array(
"bool" => array(
"must" => array(
array(
"wildcard" => array(
"document_title" => "never listened",
)
),
array(
"wildcard" => array(
"document_content" => "never listened"
)
),
array(
"match" => array(
"document_tone" => "negative"
)
)
)
)
)
)
);
$response = $client->count($params);
$negative = $response['count'];
var_dump($negative);
【问题讨论】:
-
array("wildcard" => array("document_title" => "never Listened", )), array("wildcard" => array("document_content" => "never Listened"))应该是应该的一部分
标签: php elasticsearch