【问题标题】:Elasticsearch Filter QueryElasticsearch 过滤查询
【发布时间】:2017-02-13 11:13:43
【问题描述】:

我使用的是弹性搜索 1.5.2。我存储了一些带有“过敏”字段的产品,而另一些则没有此字段。该字段的值可以是鱼、牛奶或坚果等。我想进行查询,结果只得到根本没有这个字段的产品,称为“过敏”,并将其集成到其他聚合中询问。我只想做一个查询:首先排除具有“过敏”字段的产品,然后执行第二个块的聚合查询。

如何整合:

{
    "constant_score" : {
        "filter" : {
            "missing" : { "field" : "allergic" }
        }
    }
}

到这个聚合查询:

POST tes1/_search?search_type=count
{
    "aggs" : {
        "fruits" : {
            "filter" : {
                "query":{
                "query_string": {
                   "query": "Fruits",
                   "fields": [
                      "category"
                   ]
                }
            }},
            "aggs" : {
                "minprice": {
                    "top_hits": {
                        "sort": [
                            {
                                "prix en €/kg": {
                                    "order": "asc"
                                }
                            }
                        ], "size":400
                    }
                }
            }
     }}   }

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您需要在聚合调用之前添加查询部分。这将过滤结果,然后在结果集上运行聚合。

    POST tes1/_search
    {
        "_source": false, 
        "size": 1000, 
            "query": 
                { "constant_score" : {
                        "filter" : {
                            "missing" : { "field" : "allergic" }
                        }
                    }
                },
        "aggs" : {
            "fruits" : {
                "filter" : {
                    "query":{
                    "query_string": {
                       "query": "Fruits",
                       "fields": [
                          "category"
                       ]
                    }
                }},
                "aggs" : {
                    "minprice": {
                        "top_hits": {
                            "sort": [
                                {
                                    "prix en €/kg": {
                                        "order": "asc"
                                    }
                                }
                            ], "size":400
                        }
                    }
                }
         }}   }
    

    附带说明,请考虑将 ElasticSearch 升级到最新版本,因为不再支持 1.x。

    【讨论】:

    • 你能再看一遍这个问题吗?我编辑它以添加打印的查询。谢谢。
    • 顺便说一句,我试过这个: POST test1/_search { "constant_score" : { "filter" : { "missing" : { "field" : "allergic" } } } }有错误
    • 修改了我的答案。请尝试执行上述查询。
    • 有效!我感谢您的帮助 !非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多