首页 > 其他分享 >4.ElasticSearch~进阶(二)

4.ElasticSearch~进阶(二)

时间:2023-07-18 14:33:48浏览次数:35  
标签:聚合 进阶 field ElasticSearch aggs 薪资 avg size

1、aggregation (执行聚合)
聚合提供了从数据中分组和提取数据的能力。最简单的聚合大致等于SQL的聚合函数。
在ElasticSearch中,你有执行搜索返回hit,并且同时返回聚合结果,把一个响应中所有hits分隔开的
能力,这是非常强大且有效的。您可以执行查询和多个聚合并且在一次使用中得到各自的返回结果,使用一次简介和简化的api来避免网络往返
语法

"aggregations" : {
    "<aggregation_name>" : {   //聚合名称
        "<aggregation_type>" : {  //聚合类型
            <aggregation_body>    //聚合体
        }
        [,"meta" : {  [<meta_data_body>] } ]?
        [,"aggregations" : { [<sub_aggregation>]+ } ]?
    }
    [,"<aggregation_name_2>" : { ... } ]*
}

1)需求:搜索address中包含mail的所有人的年龄和平均工资,但不显示这些人的详情

GET bank/_search
{
  "query": {
    "match": {
      "address": "mill"
    }
  },
  "aggs": {
    "ageagg": {
      "terms": {
        "field": "age",
        "size": 10
      }
    },
    "ageavg":{
      "avg": {
        "field": "age"
      }
    },
    "balanceavg":{
      "avg": {
        "field": "balance"
      }
    }
  }
}

  

2)按照年龄聚合,并求这些年龄段的人的平均薪资
(聚合里面套聚合)

GET /bank/_search
{
  "query":{
    "match_all": {}
  },
  "aggs": {
    "ageAgg": {
      "terms": {
        "field": "age",
        "size": 10
      },
      "aggs": {
        "balanceAvg": {
          "avg": {
            "field": "balance"
          }
        }
      }
    }
  },
  "size": 0  ##过滤掉查询的结果
}

3)查出所有的年龄分布,并且这些年龄段中M的平均薪资和F的平均薪资,以及这个年龄段总体的平均薪资

GET bank/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "agegg": {  //聚合年龄
      "terms": { 
        "field": "age",
        "size": 100
      },
      "aggs": {
         "genderagg":{  //在年龄的聚合结果上聚合性别
            "terms": {
              "field": "gender.keyword",
              "size": 2
            },
            "aggs": {
              "balanceagg": {  //xx岁 M性别的平均薪资
                "avg": {
                  "field": "balance"
                }
              }
            }
        },
          "agebalanceaavg":{  //xx岁的平均薪资
            "avg": {
              "field": "balance"
            }
          }
      }
    }
  }
}

 

标签:聚合,进阶,field,ElasticSearch,aggs,薪资,avg,size
From: https://www.cnblogs.com/xcwang9/p/17562955.html

相关文章

  • 3.ElasticSearch~进阶
    ES支持两种基本方式检索:一个是通过使用RESTrequestURI来发送搜索参数(uri+检索参数)GETbank/_search?q=*&sort=account_number:asc另一个是通过RESTrequestbody来发送他们(uri+请求体)GETbank/_search{"query":{"match_all":{}},"sort":[{"balance&qu......
  • ElasticSearch安装中文分词器(插件)、分词测试
    https://github.com/medcl/elasticsearch-analysis-ik分词测试:https://www.elastic.co/guide/en/elasticsearch/reference/6.8/indices-analyze.html请求URL:http://127.0.0.1:9200/_analyze请求方式:POST请求体/类型(JSON):{"analyzer":"ik_max_word",......
  • ElasticSearch-Mapping类型映射-增删改查
    https://www.elastic.co/guide/en/elasticsearch/reference/6.8/mapping.html7.x版本后默认都是_doc类型增加Mapping映射先说一个特殊的字段_all:https://www.elastic.co/guide/en/elasticsearch/reference/6.8/mapping-all-field.html#mapping-all-field_all字段是一个特......
  • 初始elasticSearch
    elasticSearch大致印象为什么用?mysql更擅长于crud等操作,当一张表达到百万级别时,检索速度过慢es检索速度快基本概念Index索引(两层意思)动词:类似mysql的insert名词:类似mysql的数据库type类型:类似mysql的具体表(指定了保存数据的类型,联系到了orm)Document文......
  • Elasticsearch date数据类型
    时间和日期类型是我们作为开发每天都会遇到的一种常见数据类型。和Java中有所不同,Elasticsearch 在索引创建之前并不是必须要创建索引的mapping。关系型数据库的思维就是在于写入数据之前,并不强制创建表结构。我们不用事先声明字段名称,字段类型以及长度等属性就可以直接向一个不......
  • 行行AI人才直播第10期:CTC智仝咨询联合创始人王发鑫《AI时代职场进阶之路——资深猎头
    当今AI技术正在快速渗透各个行业,从去年热门的AIGC到今年爆火的ChatGPT,人工智能高速发展让人惊叹的同时,也让“算法取代人类”、“AI或带来失业潮”等老问题重新凸显。这头灰犀牛将对未来的职场产生何种影响呢?未来什么样的人会被AI取代?AI时代的职业发展面临着何种新机遇和挑战呢?为......
  • ElasticSearch快照备份、还原
    快照备份备份和还原的前提:在配置文件elasticsearch.yml中设置path.repopath.repo:["D:\\elasticsearch-6.8.23\\elasticsearch-6.8.23\\snapshot_data"]创建快照仓库语法:PUThttp://127.0.0.1:9200/_snapshot/快照仓库名实例:创建一个名叫my_fs_backup的快照仓库PUThtt......
  • 2.ElasticSearch入门
    一、初步检索1、_catGET/_cat/nodes:查看所有结点GET/_cat/health:查看es的健康状况GET/_cat/master:查看主节点GET/_cat/indices:查看所有索引2、索引一个文档保存一个数据,保存在哪个索引的哪个类型下,指定用哪个唯一标识PUTcustomer/external/1:在customer......
  • 1-ElasticSearch - Docker安装
    1、下载镜像文件dockerpullelasticsearch:7.4.2dockerpullkibana:7.4.22、创建实例创建文件夹和配置文件mkdir-p/mydata/elasticsearch/configmkdir-p/mydata/elasticsearch/dataecho"http.host:0.0.0.0">>/mydata/elasticsearch/config/elasticsearch.yml创......
  • 【进阶玩法】策略+责任链+组合实现合同签章
    前置内容掌握策略模式掌握责任链模式掌握类继承、接口的实现掌握参数的传递与设置GitHub地址ps:【文章由来】公司项目中所用的合同签章处理流程,本人基于责任链上使用策略模式进行优化。签章的处理流程合同文本初始化合同文本生成签章挡板是否开启合同签章发送mq合同......