zoukankan      html  css  js  c++  java
  • Es学习第九课, 聚合查询和复合查询

    ES除了实现前几课的基本查询,也可以实现类似关系型数据库的聚合查询,如平均值sum、最小值min、最大值max等等

    我们就用上一课的数据作为参考来举例

    聚合查询

    sum聚合

    sum是一个求累加值的聚合,其作用与关系型数据库中相同。

    GET /lib4/items/_search
    {
      "size": 0, //表示查询多少条文档,聚合只需总和结果,输出文档可以设置为0条
      "aggs": {  //aggs表示是聚合查询
        "price_of_sum": {//自行取名作为结果集
          "sum": {
            "field":"price"
          }
        }
      }
    }

    min聚合

    min是一个求最小值的聚合,其作用与关系型数据库中相同

    GET /lib4/items/_search
    {
        "size": 0,
        "aggs": {
            "price_of_min": {
                "min": {
                    "field": "price"
                }
            }
        }
    }
     

    avg聚合

    avg是一个求平均值的聚合,其作用与关系型数据库中相同。

    GET /lib4/items/_search
    {
        "size": 0,
        "aggs": {
            "price_of_avg": {
                "avg": {
                    "field": "price"
                }
            }
        }
    }
     

    cardinality聚合

    cardinality是一个求基数的聚合,其作用与关系型数据库中相同。

    GET /lib4/items/_search
    {
        "size": 0,
        "aggs": {
            "price_of_cardi": {
                "cardinality": { //其实相当于该字段互不相同的值有多少类,输出的是种类数
                    "field": "price"
                }
            }
        }
    }
     

    terms聚合

    terms是一个分组聚合,其作用与关系型数据库中相同。

    GET /lib4/items/_search  
    {
        "size": 0,
        "aggs": {
            "price_of_by": {
                "terms": {
                    "field": "price"   //按价格来分组
                }
            }
        }
    }

    复合查询

    将多个基本查询组合成单一查询

    本质上就是把我们上一课讲的各个查询组合在一起形成一个单一查询

    使用bool查询
    接受以下参数:
    must:文档必须匹配设定条件才能被包含进来
    must_not:文档必须不匹配设定条件才能被包含进来
    should:如果满足语句中的任意语句,将增加_source,否则,无任何影响。主要用于修正每个文档的相关性得分
    filter:必须匹配,但以不评分、过滤模式来进行。这些语句对评分没有贡献,只是根据过滤标准来排除或包含文档

  • 相关阅读:
    一些软件设计的原则
    网站的分布式架构
    架构设计--逻辑层 vs 物理层
    社会化海量数据采集爬虫框架搭建
    面向设计原则理解
    职场中架构师面试,你会怎么回答?
    支撑5亿用户、1.5亿活跃用户的Twitter最新架构详解及相关实现
    关键路径法
    团队建设动车模型
    案例:双代号网络图在控制工程造价中的应用
  • 原文地址:https://www.cnblogs.com/kakatadage/p/9989274.html
Copyright © 2011-2022 走看看