elasticsearch聚合查询

添加小编微信 372787553 进入程序员技术交流群
本文已被 ElasticSearch从入门到入魔 收录

聚合查询

Elasticsearch 有一个功能叫聚合(aggregations),允许我们基于数据生成一些精细的分析结果。聚合与 SQL 中的 GROUP BY 类似但更强大。

基本语法

GET /index/_search
GET /megacorp/_search
{
  "aggs": {
    "NAME": {
      "AGG_TYPE": {}
    }
  }
}

sum

求员工的年龄综合

GET /megacorp/_search
{
  "aggs": {
    "employee age sum": {
      "sum": {
        "field": "age"
      }
    }
  }
}

minmaxavg sum 这几个的用法几乎一直

terms

举个例子,挖掘出员工中最受欢迎的兴趣爱好:

GET /megacorp/_search
{
  "aggs": {
    "all_interests": {
      "terms": {
        "field": "interests.keyword",
        "size": 1
      }
    }
  }
}

结果如下:

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
   // 忽略...
  },
  "aggregations" : {
    "all_interests" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 0,
      "buckets" : [
        {
          "key" : "music",
          "doc_count" : 2
        }
      ]
    }
  }
}


filter

GET /megacorp/_search
{
  "aggs": {
    "filter aggs": {
      "filter": {
        "term": {
          "last_name.keyword": "Fir"
        }
      }
    }
  }
}

top_hits

GET /megacorp/_search
{
  "aggs": {
    "top_hits ": {
      "top_hits": {
        "size": 1
      }
    }
  }
}

geo_distance

GET /megacorp/_search
{
  "aggs": {
    "NAME": {
      "geo_distance": {
        "field": "location",
        "origin": {
          "lat": 52.376,
          "lon": 4.894
        },
        "ranges": [
          {
            "from": 100,
            "to": 300
          }
        ]
      }
    }
  }
}

这里的聚合类型还很多,大家可以慢慢的发掘

组合示例

每个查询可以进行多个聚合条件进行约束,如:我们要查询员工里最受欢迎的爱好,已经这里最大的年龄?

GET /megacorp/_search
{
  "aggs": {
    "all interests": {
      "terms": {
        "field": "interests.keyword",
        "size": 1
      }
    },
    "employee age max": {
      "max": {
        "field": "age"
      }
      
    }
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小杨同学~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值