范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

elasticsearch聚合之bucketterms聚合

  1. 背景
  此处简单记录一下 bucket 聚合下的terms 聚合。记录一下terms 聚合的各种用法,以及各种注意事项,防止以后忘记。2. 前置条件2.1 创建索引PUT /index_person {   "settings": {     "number_of_shards": 1   },   "mappings": {     "properties": {       "id": {         "type": "long"       },       "name": {         "type": "keyword"       },       "sex": {         "type": "keyword"       },       "age": {         "type": "integer"       },       "province": {         "type": "keyword"       },       "address": {         "type": "text",         "analyzer": "ik_max_word",         "fields": {           "keyword": {             "type": "keyword",             "ignore_above": 256           }         }       }     }   } } 2.2 准备数据PUT /_bulk {"create":{"_index":"index_person","_id":1}} {"id":1,"name":"张三","sex":"男","age":20,"province":"湖北","address":"湖北省黄冈市罗田县匡河镇"} {"create":{"_index":"index_person","_id":2}} {"id":2,"name":"李四","sex":"男","age":19,"province":"江苏","address":"江苏省南京市"} {"create":{"_index":"index_person","_id":3}} {"id":3,"name":"王武","sex":"女","age":25,"province":"湖北","address":"湖北省武汉市江汉区"} {"create":{"_index":"index_person","_id":4}} {"id":4,"name":"赵六","sex":"女","age":30,"province":"北京","address":"北京市东城区"} {"create":{"_index":"index_person","_id":5}} {"id":5,"name":"钱七","sex":"女","age":16,"province":"北京","address":"北京市西城区"} {"create":{"_index":"index_person","_id":6}} {"id":6,"name":"王八","sex":"女","age":45,"province":"北京","address":"北京市朝阳区"} 3. 各种聚合3.1 统计人数最多的2个省3.1.1 dslGET /index_person/_search {   "size": 0,    "aggs": {     "agg_sex": {        "terms": {          "field": "province",         "size": 2       }     }   } } 3.1.2 运行结果
  运行结果
  3.2 统计人数最少的2个省3.2.1 dslGET /index_person/_search {   "size": 0,    "aggs": {     "agg_sex": {        "terms": {          "field": "province",         "size": 2,         "order": {           "_count": "asc"         }       }     }   } }
  注意:  不推荐使用  _count:asc 来统计,会导致统计结果不准 ,看下方的总结章节。3.2.2 运行结果
  运行结果
  3.3 根据字段值排序-根据年龄聚合,返回年龄最小的2个聚合3.3.1 dslGET /index_person/_search {   "size": 0,    "aggs": {     "agg_sex": {        "terms": {          "field": "age",         "size": 2,         "order": {           "_key": "asc"         }       }     }   } }
  注意:  这种根据字段值来排序,聚合的结果是正确的。 3.3.2 运行结果
  运行结果
  3.4 子聚合排序-先根据省聚合,然后根据每个聚合后的最小年龄排序3.4.1 dslGET /index_person/_search {   "size": 0,    "aggs": {     "agg_sex": {        "terms": {          "field": "province",         "order": {           "min_age": "asc"         }       },       "aggs": {         "min_age": {           "min": {             "field": "age"           }         }       }     }   } }  GET /index_person/_search {   "size": 0,    "aggs": {     "agg_sex": {        "terms": {          "field": "province",         "order": {           "min_age.min": "asc"         }       },       "aggs": {         "min_age": {           "stats": {             "field": "age"           }         }       }     }   } }
  注意:  子聚合排序一般也是不准的,但是如果是根据子聚合的 最大值倒序 和最小值升序 又是准的。3.4.2 运行结果
  运行结果
  3.5 脚本聚合-根据省聚合,如果地址中有黄冈市则需要出现黄冈市
  3.5.1 dsl
  GET /index_person/_search {   "size": 0,       "runtime_mappings": {     "province_sex": {       "type": "keyword",       "script": """           String province = doc["province"].value;           String address = doc["address.keyword"].value;           if(address.contains("黄冈市")){             emit("黄冈市");           }else{             emit(province);           }       """     }   },       "aggs": {     "agg_sex": {        "terms": {          "field": "province_sex"       }     }   } }
  注意事项
  3.5.2 运行结果
  运行结果
  3.6 filter-以省分组,并且只包含北的省,但是需要排除湖北省3.6.1 dslGET /index_person/_search {   "size": 0,    "aggs": {     "agg_province": {        "terms": {          "field": "province",         "include": ".*北.*",         "exclude": ["湖北"]       }     }   } }
  注意:  当是字符串时,可以写正则表达式,当是数组时,需要写具体的值。 3.6.2 运行结果
  运行结果
  3.7 多term聚合-根据省和性别聚合,然后根据最大年龄倒序3.7.1 dslGET /index_person/_search {   "size": 0,   "aggs": {     "genres_and_products": {       "multi_terms": {         "size": 10,         "shard_size": 25,         "order":{           "max_age": "desc"             },         "terms": [           {             "field": "province",             "missing": "defaultProvince"           },           {             "field": "sex"           }         ]       },       "aggs": {         "max_age": {           "max": {             "field": "age"           }         }       }     }   } }
  注意:   terms 聚合默认不支持多字段聚合,需要借助别的方式。此处使用multi terms 来实现多字段聚合。3.7.2 运行结果
  运行结果
  3.8 missing value 处理
  missing value 处理
  3.9 多个聚合-同时返回根据省聚合和根据性别聚合
  3.9.1 dsl
  GET /index_person/_search {   "size": 0,   "aggs": {     "agg_province": {       "terms": {         "field": "province"       }     },     "agg_sex":{       "terms": {         "field": "sex",         "size": 10       }     }   } }
  3.9.2 运行结果
  运行结果
  4. 总结
  4.1 可以聚合的字段
  一般情况下,只有如下几种字段类型可以进行聚合操作  keyword ,numeric ,ip ,boolean 和binary 类型的字段。text 类型的字段默认情况下是不可以进行聚合的,如果需要聚合,需要开启fielddata 。
  可以聚合的字段
  4.2 如果我们想返回所有的聚合Term结果
  如果我们只想返回 100 或1000 个唯一结果,可以增大size 参数的值。但是如果我们想返回所有的,那么推荐使用 composite aggregation
  如果我们想返回所有的聚合Term结果4.3 聚合数据不准
  我们通过 terms 聚合到的结果是一个大概的结果,不一定是完全正确的。
  为什么? . 举个例子:  如果我们的集群有3个分片,此处我们想返回值最高的5个统计。即size=5 ,假设先不考虑shard_size 参数,那么此时每个节点会返回值最高的5个统计,然后再次聚合,返回,返回最终值最高的5个。这个貌似没什么问题,但是因为我们的数据是分布es的各个节点上的,可能某个统计项(北京市的用户数 ),在A节点是是排名前5,但是在B节点上不是排名前5,那么最终的统计结果是否是就会漏统计了。
  如何解决:  我们可以让es在每个节点上多返回几个结果,比如 :我们的size=5 ,那么我们每个节点就返回 size * 1.5 + 10  个结果,那么误差相应的就会减少。 而这个size * 1.5 + 10 就是shard_size 的值,当然我们也可以手动指定,但一般需要比size的值大。
  聚合数据不准
  4.4 排序注意事项
  4.4.1 _count 排序
  默认情况下,使用的是  _count  倒序的,但是我们可以指定成升序,但是这是不推荐的,会导致错误结果。如果我们想要升序,可以使用 rare_terms 聚合。
  _count 排序
  4.4.2 字段值排序
  使用字段值排序,不管是正序还是倒序,结果是准确的。
  字段值排序
  4.4.3 子聚合排序
  子聚合排序
  4.5 多term聚合
  多term聚合
  5、源码地址
  https://gitee.com/huan1993/spring-cloud-parent/blob/master/es/es8-api/src/main/java/com/huan/es8/aggregations/bucket/TermsAggs.java 6. 参考链接https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-multi-terms-aggregation.html

入秋后的基础款竟然可以这么穿,时髦高级有气质,照着穿准没错入秋之后,我们又可以买新衣服啦,在秋天流行的衣服越来越多,小姐姐们可以给自己入手衬衫,牛仔裤,西装这些经典又耐看的服装,但是这些经典款在搭配的时候也需要结合不少的技巧,毕竟学会穿搭初秋的第一条连衣裙!优雅又大气的淑女风范虽说转眼就到了夏末,但是还是割舍不掉对连衣裙的喜爱。初秋的第一条连衣裙,该怎么选择才好呢?雪纺裙夏末转秋,不少地方的天气还是偏热的。在这种冷热交替反复的转季时节,轻盈透气的雪纺既不新疆沙漠中发现地下海洋,为何迟迟不开采?若开采了会如何?新疆作为我国最大的省级行政区,面积高达166万平方千米,按理来说这样大的地盘利用价值是非常高的,但是事实并不是这样。位于西北边陲的美丽新疆根据2021年的统计数据来看新疆的常住人口新疆昆仑山发现11只狼外出觅食,围杀900斤牦牛,猞猁被吓到树上昆仑山是中国第一神山,被誉为万山之宗,横贯新疆西藏间,伸延至青海境内,全长约2500千米,平均海拔55006000米。昆仑山的美自不用过多言说,到过那的人都能超凡脱俗,过滤掉一切烦北极扛不住了?这绝对不是好事,冰川融化加快,远古病毒可能复苏地球是一颗有生命存在的星球,在地球上有很多生物存在,有海洋生物,有陆地生物,有两栖生物和众多微生物等等,人类是地球上最有智慧的生命,人类从诞生开始就不断的探索世界的奥秘,经过几千年EDG或成为送票小子?已送两支队伍进世界赛,冒泡赛形势严峻伴随着2022LPL夏季赛败者组决赛的结束,世界冠军队伍EDG却遭遇到了TES的横扫无缘夏季赛决赛。不过有意思的是,虽然这是一场TES的胜利,但因为TES已早早锁定了世界赛的资格,首冠揭晓!世锦赛四项世界第一归位,中国一姐逆势上演绝地反击羽毛球世锦赛决赛首冠揭晓,印尼名将组合阿山亨德拉功亏一篑,遗憾丢掉冠军另外四个单项,世界第一全部归位,直面对手的冲击中国一姐逆势上演绝地反击,尤其值得球迷关注,一场焦点大战,将会在内蒙古电网正在逐渐转变为高比例新能源的新型电力系统近日,内蒙古电力经济技术研究院完成了内蒙古电网发展报告2021(以下简称报告)编制出版工作。报告显示,截至2021年底,内蒙古电网煤电装机容量占电源总装机容量的55。2,风电装机容NBA晚报KD反击巴克利,欧文有望爆发,篮网失败原因在纳什关注NBA的朋友们,大家好!在漫长的休赛期,NBA球星的动态成为了球迷们关注的重点。克莱受伤的腿肌肉恢复良好,杜兰特反击巴克利,韦德接受采访谈到多个话题,欧文想打出MVP级别的赛季62幅奇观美景,各具特色,饱眼福了金秋大美,古树枫叶。古石桥,形状恰似一弯月亮。湖边的红花石蒜九华山,是中国佛教四大名山之一。山间古刹林立,香烟缭绕,古木参天,灵秀幽静。是大愿地藏王菩萨道场,被誉为国际性佛教道场。勤奋努力,才能过上真实而体面的生活只有通过勤奋努力,才能过上真实而体面的生活。生活是逐渐消耗和使用时间的过程。一旦失去时间,生命就会终结。我们活在世上,好事坏事都会遇到。我要打造一把铁锁,将我的心锁住。精致是一个人4888元起!鼎桥P50开售华为P50同款,支持5G8月27日,鼎桥TDTechP505G手机正式开售。名字很熟悉?别急,它的外观你可能更熟悉,因为除了没有徕卡标,其他和华为P50完全是一个模子刻出来的,再看看配置,那就更熟悉了,与从3199跌至2169元,骁龙87012GB65W闪充,曲面屏手机加速退场当前的手机市场中,除了苹果之外,其他手机厂商都有采用曲面屏设计,很长一段时间以来,曲面屏仅在高端旗舰机上才具备,由于是高端旗舰,所以价格自然也是不便宜的。曲面屏设计看起来确实更加高2022年了,GoPro7还值得入手吗?最近有一位一起骑车的摩友想入手一台运动相机,但是目前主流的运动相机普遍价格都在三千元左右。这对于我们一般人来说虽然买得起但是又有些肉疼。那么有没有一款既可以满足日常需求,价格又不贵4强争霸,西部陷入大乱斗,湖人没什么机会了距离NBA新赛季的开始,越来越近了,各支球队的补强虽然还没有全部完成,但是对于新赛季格局的影响,并不是太大了!而在西部,相比于上赛季勇士的一枝独秀,新赛季的竞争无疑激烈加倍。就目前1年2890万!湖人得到高大三分版库里?那西部就有的看了1718赛季。场均4。2个三分联盟第1,42。3的命中率仅次于克莱汤普森的44。0。1819赛季。场均5。1个三分联盟第1,43。7的命中率联盟第1。1920赛季。因伤未列入技术统威金斯谈勇士很荣幸来到这里,但有的人并不想我好过作为上赛季总冠军的金州勇士队,他们今夏就是最大的赢家,但在这赢家的背后,却是每年高额的薪水支出。勇士队已经连续几个赛季付出奢侈税,承担着库里克莱威金斯和格林等人高额的薪水,这才成为野球帝高铁站被摁地上殴打,网友说,又一个打不还手的男人01。hr如果不是在高铁站惨遭多人殴打一事登上热搜,或许我们中很多人还不知道这个叫张照洋的人。在网友晒出的视频中,张照洋不知道什么原因在青岛高铁站与人发生肢体冲突,遭到了两名男子的谋杀!27岁前意甲豪门中卫用锤子重击56岁前女友再将她扔下阳台曾经,他被认为是意大利足坛的希望之星,在意甲传统劲旅那不勒斯的青训系统里,他是佼佼者。因为伤病等因素,他的生涯受到了重创。最近几年,27岁的他辗转于意大利的乙级丙级,甚至是丁级联赛2022年美区苹果id免费共享账号大全100可用美区苹果id使用教程时值周末,美区苹果ID共享账号和密码大全分享给诸位,想玩美服手游却没有美区AppleID的果粉赶紧来领!都是小编刚刚注册的2022最新的ios账号,这几组美区地区苹果id账号都是可告别NBA6年,邓肯胡子头发花白,妻子年轻靓丽,不转型也很幸福邓肯是NBA的巨星,他是一个几乎没有缺点的球员。赛场上,邓肯攻防两端统治力十足,带领马刺队成就了王朝。赛场外,邓肯几乎没有花边新闻,不泡妞不去夜店,不沾染毒品,是个顾家的好好先生。咱们不能这么对待蔡崇信先生,他一直在为中国篮球做着贡献蔡崇信先生今天布鲁克林篮网队官宣签下日本前锋渡边雄太,这则消息刺激了不少国内球迷。他们认为蔡崇信先生作为一名华裔老板,不应该签日本球员,而是应该签一名中国球员,比如曾凡博张镇麟郭昊
家乐福购物卡使用受限遭质疑!顾客吐槽货架空了,物价高了近期家乐福购物卡在门店无法购物消息持续发酵多地消费者反映使用家乐福购物卡消费受限部分家乐福门店货架出现空置现象作为首批进入中国的国外大型商场家乐福曾被业界称为零售之王如今传统大卖场保罗克鲁格曼经济学家为什么错得如此离谱?原创李井奎按此文克鲁格曼写于2008年大危机之后,题目中的经济学家其实是特指自20世纪80年代以来的宏观经济学家,具体来说,就是研究经济波动的一批主流经济学者。不过,此文中的许多批海口数字赋能产业兴,点亮发展新引擎当前,数字经济已成为重塑产业经济结构增强区域竞争力的关键力量和重要方向。2022年,海口数字经济营收575。32亿元(不含商贸业)。全市新增注册互联网企业数量2278家,累计达21前沿腾讯研究院发布2023年十大数字科技前沿应用趋势腾讯研究院联合百位内部科学家技术专家和外部院士专家,发布升维2023年十大数字科技前沿应用趋势报告观察。报告从数字科技的科研突破重大事件和创新应用等方面,对高性能计算泛在操作系统云长安汽车重构乘用车品牌架构,特斯拉股价一周大涨33第一财经汽车日评长安汽车重构乘用车品牌架构近日,长安汽车在重庆举办全球伙伴大会。本次会议上,长安汽车正式发布了新序列OX未来规划,同时发布了智电iDD和3款电混车型。长安汽车董事长朱华荣表示,长安回忆旧年时间太瘦,指缝太宽,握不住也抓不牢的生命辰光就这样在我的满腹唏嘘中,在我万分无奈中溜走。2022,一个充满了艰难与期盼的年轮,一个让我顿足又失落的一年。这一年我颇有感慨,我总想把一烟火,中国一场烟火,别人只记得它的壮美。一个中国人只记得它雄伟。一点火苗从线头到线尾线头烧光了,这时就会喷出火花是多么好看啊!一点一点就像一个喷泉五光十色,在夜里是多闪亮,好像喷出来的不是火想走的路,永远不远想走的路,永远不远。怎料,自己竟被一位五十多岁,没有在学校待过一天的大妈的一句话破防了。绵延不绝的爆竹声拉开了新年的帷幕,破开了新年的气象。望着点点繁星,看着灿烂的烟花,家乡的味道金句摘抄少年歌行太燃了!伞,遮得了天上的雨,却遮不住心里的雨,我们索性把心灵洗一洗,总会雨过天晴,云淡风轻。佛哭了,魔笑了,魔说该渡的你不渡,不该渡的你偏渡,既然佛不渡你,那就魔来护你。师傅没教我念经,没三体粒子对撞实验三体动画的一开头就有这样的台词科学发展,突破口在哪儿?粒子对撞实验?!接下来我们就看到了太空中的对撞机当然也看到了智子对实验的干扰。三体人为何如此害怕地球人的对撞机?对撞机实际上是知名投资人林劲峰做客徽商商海经分享投资逻辑投资最好的建议就是不要盲目听取别人的建议,投资最大的风口就是远离风口。林劲峰盈信投资集团董事长林劲峰(右)接受徽商商海经栏目专访2023年1月5日,由中国农业银行安徽省分行独家冠名