当前位置: 首页 > article >正文

ES-聚合分析

ES的聚合分析

什么是ES的聚合分析

  • ElasticSearch除搜索意外,提供的针对ES数据进行统计分析的功能
  • 通过聚合,我们会得到一个数据的概览,是分析和总结全套的数据,而不是寻找单独的文档
  • 高性能,只要一条语句就可以得到分析结果

聚合分类

Bucket Aggregation 一些满足特定条件的文档的集合

  • Terms Aggregation:这种分桶策略是按照词条(term)来分桶,类似于SQL中的group by语法。如果是text类型,则按照分词后的结果分桶。例如,可以按照省份或用户名等字段进行分桶。
GET xby_index_users/_search
{
  "size": 0,
  "aggs": {
    "birth_place_bucket": {
      "terms": {
        "field": "birth_place"
      }
    }
  }
}
  • Range Aggregation:通过指定数值的范围来设定分桶规则。可以定义多个范围,文档会根据这些范围被分配到不同的桶中。
GET xby_index_users/_search
{
  "size": 0,
  "aggs": {
    "age_bucket": {
      "range": {
        "field": "age",
        "ranges": [
          { "from": 0, "to": 30 },
          { "from": 30, "to": 60 },
          { "from": 60, "to": 90 }
        ]
      }
    }
  }
}
  • Histogram Aggregation:直方图分桶,以固定间隔的策略来分割数据。可以指定间隔大小(interval)和数据范围(extended_bounds)。
GET xby_index_users/_search
{
  "size": 0,
  "aggs": {
    "age_bucket": {
      "histogram": {
        "field": "age",
        "interval": 30
      }
    }
  }
}
  • Date Histogram Aggregation:日期直方图分桶,根据日期阶梯分组,例如给定阶梯为周,会自动每周分为一组。
GET xby_index_users/_search
{
  "size": 0,
  "aggs": {
    "birthday_bucket": {
      "date_histogram": {
        "field": "birthday",
        "calendar_interval": "year"
      }
    }
  }
}

Metric Aggregation 一些数学运算,可以对文档字段进行统计分析

  • 仅输出一个值的运算
    min/max/sum/avg/cardinality
GET xby_index_users/_search
{
  "size": 0,
  "aggs": {
    "age_avg": {
      "avg": {
        "field": "age"
      }
    },
    "age_max": {
      "max": {
        "field": "age"
      }
    },
    "age_min": {
      "min": {
        "field": "age"
      }
    },
    "age_sum": {
      "sum": {
        "field": "age"
      }
    },
    "age_cardinality": {
      "cardinality": {
        "field": "age"
      }
    }
  }
}
  • 输出多个值的运算
    stats/percenties/percentile_ranks
GET xby_index_users/_search
{
  "size": 0,
  "aggs": {
    "age_stats": {
      "stats": {
        "field": "age"
      }
    },
    "age_percentiles": {
      "percentiles": {
        "field": "age"
      }
    }
  }
}

Pipeline Aggregation 对其他运算结果的二次运算

GET xby_index_users/_search
{
  "size": 0,
  "aggs": {
    "sales_per_month": {
      "date_histogram": {
        "field": "date",
        "interval": "month"
      },
      "aggs": {
        "sales": {
          "sum": {
            "field": "price"
          }
        }
      }
    },
    "avg_monthly_sales": {
      "avg_bucket": {
        "buckets_path": "sales_per_month>sales"
      }
    }
  }
}

http://www.kler.cn/a/455051.html

相关文章:

  • 【火猫DOTA2】VP一号位透露队伍不会保留原阵容
  • 消息中间件RabbitMQ和kafka
  • QGIS二次开发(地图符号库操作)
  • vscode打开下一个文件的时候上一个文件会关闭
  • 一文了解多云原生的现代化实时数仓 SelectDB Cloud
  • autMan奥特曼机器人-autMan的PHP环境
  • 中型项目中 Redis 的关键作用
  • Python Cookbook学习笔记-队列的处理
  • Linux 基本指令
  • 深度学习-论文即插即用模块1
  • 第三节、电机定速转动【51单片机-L298N-步进电机教程】
  • VMwareTools安装(ubuntu23)
  • 【Django自学】Django入门:如何使用django开发一个web项目(非常详细)
  • python-常用文件和目录操作
  • Web3如何推动元宇宙的去中心化发展?
  • 2024基于大模型的智能运维(附实践资料合集)
  • uniappX 移动端单行/多行文字隐藏显示省略号
  • 信息安全管理:通信与操作安全控制要点与管理策略
  • HarmonyOS NEXT 实战之元服务:静态案例效果---本地特色景色
  • leetcode 354. 俄罗斯套娃信封问题