【问题标题】:Filter query: Not null in elastic search过滤查询:弹性搜索中不为空
【发布时间】:2016-03-02 09:34:10
【问题描述】:

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

users 中选择user_id 订阅类型! =''

在上面的查询中,我需要在 Elastic Search 中编写,我正在尝试使用 Elastic Search,但它得到了 请在弹性搜索中找到以下代码

$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' => ''))
                            )))
        )));

请帮我解决这种情况

【问题讨论】:

  • 看看我的回答也许有帮助。提醒一下,如果您发布您的地图和一小部分文档以便我们重现您的问题,我们会更容易为您提供帮助。

标签: php mysql elasticsearch


【解决方案1】:

我看到两种可能的情况:

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

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

【讨论】:

    猜你喜欢
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 2020-07-25
    • 2014-09-29
    相关资源
    最近更新 更多