【问题标题】:elastic search: Advanced Filter Query弹性搜索:高级过滤查询
【发布时间】:2015-11-30 16:44:13
【问题描述】:

我正在为我当前的项目进行弹性搜索。我需要一个基于用户行业的过滤器。请看一次我的代码。和mySql查询如下

SELECT U.* FROM `users` `U`
JOIN `user_industries` `UI` ON `UI`.`user_id`=`U`.`id`
WHERE `UI`.`industry_id` IN('1','3','5');


$query = array("from" => $start,
            "size" => $recordslimit,
            "sort" => array(array('id' => 'desc')),
            "query" => array(
                "filtered" => array(
                    "query" => array("match_all" => array()),
                    "filter" => array(
                        "bool" => array(
                        'must' => array(array('term' => array('user_type' => 'v')),
                                array('term' => array('status' => 'a')),
                                array('term' => array('industries.id' => 1))
                                ),
                        'must_not' => array(
                                array('term' => array('subscription_type' => 'n'))
                            )
                        ))
        )));

我通过了一项行业价值。我如何传递多个行业的值

【问题讨论】:

    标签: mysql elasticsearch


    【解决方案1】:

    伟大的开始!您可以通过使用terms filter 而不是term 并在array() 中指定值1, 3, 5 来实现您想要的:

    ...
    array('terms' => array('industries.id' => array(1, 3, 5)))
    ...
    

    【讨论】:

    • Great Yar.. 感谢@Val
    猜你喜欢
    • 2016-03-27
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2016-03-02
    相关资源
    最近更新 更多