码迷,mamicode.com
首页 > 其他好文 > 详细

elasticsearch中的filter与aggs

时间:2015-04-04 12:05:13      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:

今天在ES上做了一个聚合,先过滤一个嵌套对象,再对另一个域做聚合,但是过滤似乎没有起作用

{
    "size":0,
    "filter":{
        "nested":{
            "path":"nna_risks",
            "filter":{
                "exists":{
                    "field":"nna_risks.ina_id"
                }
            }
         }
    },
    "aggs":{
        "level0":{
            "terms":{
                "script":"doc[‘inp_type‘].value"
            }
        }
    }
}

结果如下:

took: 47
timed_out: false
? _shards{}
total: 25
successful: 25
failed: 0
? hits{}
total: 31470
max_score: 0
? hits[]
? aggregations{}
? level0{}
doc_count_error_upper_bound: 0
sum_other_doc_count: 0
? buckets[]
key: "2"
doc_count: 147617
key: "5"
doc_count: 139434
key: "3"
doc_count: 47220
key: "1"
doc_count: 24580
key: "4"
doc_count: 10148

从结果上看,聚合到的数目相加与Hits不相等;分析后发现,聚合的数据不是来源于过滤后,而是整个数据集;

修改方法, 不用过滤,而是用查询过滤

{
    "size":0,
    "query":{
        "filtered":{
        "filter":{
            "nested":{
                "path":"nna_risks",
                "filter":{
                    "exists":{
                        "field":"nna_risks.ina_id"
                    }
                }
             }
        }
      }
  },
"aggs":{ "level0":{ "terms":{ "script":"doc[‘inp_type‘].value" } } } }

结果集:

took: 14
timed_out: false
? _shards{}
total: 25
successful: 25
failed: 0
? hits{}
total: 31617
max_score: 0
? hits[]
? aggregations{}
? level0{}
doc_count_error_upper_bound: 0
sum_other_doc_count: 0
? buckets[]
key: "3"
doc_count: 18634
key: "1"
doc_count: 7464
key: "2"
doc_count: 2845
key: "5"
doc_count: 1738
key: "4"
doc_count: 936

或者在聚合体中过滤:

{
    "size":0,   
    "aggs":{
        "level0":{
            "filter":{
                "nested":{
                    "path":"nna_risks",
                    "filter":{
                        "exists":{
                            "field":"nna_risks.ina_id"
                        }
                    }
                }
            },
            "aggs":{
                "level1":{
                    "terms":{
                        "script":"doc[‘inp_type‘].value"
                    }
                }
            }
        }
    }
}

结果为:

took: 36
timed_out: false
? _shards{}
total: 25
successful: 25
failed: 0
? hits{}
total: 375035
max_score: 0
? hits[]
? aggregations{}
? level0{}
doc_count: 31836
? level1{}
doc_count_error_upper_bound: 0
sum_other_doc_count: 0
? buckets[]
key: "3"
doc_count: 18727
key: "1"
doc_count: 7525
key: "2"
doc_count: 2878
key: "5"
doc_count: 1743
key: "4"
doc_count: 963

 

elasticsearch中的filter与aggs

标签:

原文地址:http://www.cnblogs.com/wmx3ng/p/4391836.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!