Elasticsearch过滤查询

时间:2017-02-13 01:44:30

标签: elasticsearch

我正在使用elasticsearch 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
                    }
                }
            }
     }}   }

1 个答案:

答案 0 :(得分:0)

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

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.