ElasticSearch并在PHP中搜索多个字段

 手机用户2502856203 发布于 2023-02-07 17:43

我使用的是最新版本的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;

但结果甚至没有接近我希望得到的数据.

有时$ States和/或$ category只能有一个元素.

1 个回答
  • 这是因为PHP数组的工作方式,terms每次都要覆盖查询,而是尝试以下方面:

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

    minimum_should_matchmust查询的子句无关.

    2023-02-07 17:48 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有