今天在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: ""
doc_count: 147617
key: ""
doc_count: 139434
key: ""
doc_count: 47220
key: ""
doc_count: 24580
key: ""
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: ""
doc_count: 18634
key: ""
doc_count: 7464
key: ""
doc_count: 2845
key: ""
doc_count: 1738
key: ""
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: ""
doc_count: 18727
key: ""
doc_count: 7525
key: ""
doc_count: 2878
key: ""
doc_count: 1743
key: ""
doc_count: 963

elasticsearch中的filter与aggs的更多相关文章

  1. 如何在Elasticsearch中安装中文分词器(IK+pinyin)

    如果直接使用Elasticsearch的朋友在处理中文内容的搜索时,肯定会遇到很尴尬的问题--中文词语被分成了一个一个的汉字,当用Kibana作图的时候,按照term来分组,结果一个汉字被分成了一组. ...

  2. 在Elasticsearch中查询Term Vectors词条向量信息

    这篇文章有点深度,可能需要一些Lucene或者全文检索的背景.由于我也很久没有看过Lucene了,有些地方理解的不对还请多多指正. 更多内容还请参考整理的ELK教程 关于Term Vectors 额, ...

  3. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作(二)

    CSSDesk body { background-color: #2574b0; } /*! zybuluo */ article,aside,details,figcaption,figure,f ...

  4. ElasticSearch中的简单查询

    前言 最近修改项目,又看了下ElasticSearch中的搜索,所以简单整理一下其中的查询语句等.都是比较基础的.PS,好久没写博客了..大概就是因为懒吧.闲言少叙书归正传. 查询示例 http:// ...

  5. elasticsearch中的mapping映射配置与查询典型案例

    elasticsearch中的mapping映射配置与查询典型案例 elasticsearch中的mapping映射配置示例比如要搭建个中文新闻信息的搜索引擎,新闻有"标题".&q ...

  6. Elasticsearch query和filter的区别

    1.关于Query context和filter context 查询语句的表现行为取决于使用了查询上下文方式还是过滤上下文方式. Query context:查询上下文,回答了“文档是如何被查询语句 ...

  7. Elasticsearch 中映射参数doc_values 和 fielddata分析比较

    doc_values 默认情况下,大部分字段是索引的,这样让这些字段可被搜索.倒排索引(inverted index)允许查询请求在词项列表中查找搜索项(search term),并立即获得包含该词项 ...

  8. Logstash:把MySQL数据导入到Elasticsearch中

    Logstash:把MySQL数据导入到Elasticsearch中 前提条件 需要安装好Elasticsearch及Kibana. MySQL安装 根据不同的操作系统我们分别对MySQL进行安装.我 ...

  9. ElasticSearch中的sort排序和filedData作用

    默认情况下,ElasticSearch 会根据算分进行排序: 可以使用 sort API 指定排序的规则: POST /kibana_sample_data_ecommerce/_search { & ...

随机推荐

  1. JAVA中“==”和equals

     A."=="可用于基本类型和引用类型: 当用于基本类型时候,是比较值是否相同:1==2: false: 当用于引用类型的时候,是比较是否指向同一个对象.  B.基本类型int.c ...

  2. DIV+CSS设置及问题总结

    HTML 中有用的字符实体 注释:实体名称对大小写敏感! 显示结果 描述 实体名称 实体编号   空格     < 小于号 < < > 大于号 > > & ...

  3. mysql 单列索引限制

    innodb_large_prefix. 这个参数默认值是OFF.当改为ON时,允许列索引最大达到3072. >=5.7.7默认打开 <=5.7.6默认关闭 innodb_large_pr ...

  4. Java语言中的协变和逆变(zz)

    转载声明: 本文转载至:http://swiftlet.net/archives/1950 协变和逆变指的是宽类型和窄类型在某种情况下的替换或交换的特性.简单的说,协变就是用一个窄类型替代宽类型,而逆 ...

  5. Python 进阶 之 @property

    @property是一个装饰器,由Python原生库所支持,无需import @property 的作用是将函数变成属性,一般作用于类内的成员函数. 先贴个代码来描述一下@poperty存在的意义: ...

  6. MYSQL 的异常CRASH事件处理

    检查问题的过程****************************************************************************************** ps ...

  7. RAID磁盘恢复方法之一Winhex镜像硬盘与镜像中恢复数据图文

    winhex镜像硬盘和ghost备份是完全不同的,ghost只能克隆或者镜像分区内正常的数据,删除的数据他是不会克隆的,所以在数据恢复应用中,ghost对我们来讲作用就不大了,而使用winhex备份( ...

  8. 【互动问答分享】第8期决胜云计算大数据时代Spark亚太研究院公益大讲堂

    “决胜云计算大数据时代” Spark亚太研究院100期公益大讲堂 [第8期互动问答分享] Q1:spark线上用什么版本好? 建议从最低使用的Spark 1.0.0版本,Spark在1.0.0开始核心 ...

  9. 洛谷 P1012 拼数 [字符串]

    题目描述 设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数. 例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213 又如:n=4时,4个整数7,13,4 ...

  10. codeforces 713C C. Sonya and Problem Wihtout a Legend(dp)(将一个数组变成严格单增数组的最少步骤)

    E. Sonya and Problem Wihtout a Legend time limit per test 5 seconds memory limit per test 256 megaby ...