过滤查询:弹性搜索中不为空

时间:2015-11-28 09:51:56

标签: php mysql elasticsearch

目前我正在为我当前的项目开发Elastic Search 2.0。 MySqL查询如下,

user_id中选择users,其中subscription_type! =''

在上面的查询中,我需要在弹性搜索中编写,我正在尝试进行弹性搜索,但它正在进行中 请在弹性搜索中找到以下代码

$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_not' => array(
                                array('term' => array('subscription_type' => ''))
                            )))
        )));

请帮我解决这个问题

1 个答案:

答案 0 :(得分:1)

我看到两种可能的情况:

如果订阅类型为空或未出现在您的文档中,那么您可以在must_not子句中使用missing query而不是术语查询。

另一方面,如果您想排除那些subscription_type字段包含空字符串的文档,那么您的查询是正确的,但可能您的映射不是。确保映射中subscription_type被定义为not_analyzed