php - ElasticSearch 和在 PHP 中搜索多个字段

标签 php mongodb elasticsearch elasticsearch-plugin

我正在使用最新版本的 elasticsearch-php以及最新版本的 MongoDB 和 ElasticSearch。

我需要对可包含一个或多个值的多个字段进行搜索。示例:

country_code 应该是 NL、BE 或 DE 和 类别应包含 AA01、BB01、CC02 或 ZZ11

我想我会按照下面的方式解决它(PHP):

$countries = array(“NL”, “BE”, “DE”);
$category = array(“AA01”, “BB01”, “CC02”, “ZZ11”);

$searchParams['body']['query']['bool']['must']['terms']['country'] = $countries;
$searchParams['body']['query']['bool']['must']['terms']['categories'] = $category;
$searchParams['body']['query']['bool']['must']['terms']['minimum_should_match'] = 1;

但结果甚至没有接近我期望返回的数据。

有时 $countries 和/或 $category 只能有一个元素。

最佳答案

这是因为 PHP 数组的工作方式,您每次都在覆盖 terms 查询,而是尝试以下方式:

array(
    'body' => array('query' => 
    'bool' => array(
        'must' => array(
            array('terms' => array('country' => implode(' ', $countries))),
            array('terms' => array('category' => implode(' ', $category))),
        )
    )
))

minimum_should_match 对查询的 must 子句没有用。

关于php - ElasticSearch 和在 PHP 中搜索多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20818516/

相关文章:

使用 Ratchet Websockets 进行 PHP 实时聊天

c++ - Mongo-C 驱动程序 (1.7.0-r2) 的 MongoDB 链接器错误

mongodb - 玩!框架 1.2.4 - 从吗啡中立即保存

elasticsearch - elasticsearch aggs 中的非重复计数大于 doc_count

php - fatal error : Class 'Mustache_Engine' not found

php - 选择开始年份和开始月份到结束年份和结束月份之间的数据?

php - 无法从表中检索图像数据并显示图像

node.js - 如何增加 Node.js 中脚本的最大执行时间?

spring - 如何让elasticsearch数据与MySql保持同步?

c# - 基于第三方ElasticSearch解决方案在解决方案中制作对象模型