Elasticsearch实战教程:怎样使用集群索引数据来举行统计多个数据?

[复制链接]
发表于 2026-2-6 07:08:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×


🎬 鸽芷咕:个人主页
 🔥 个人专栏: 《C++干货基地》《粉丝福利》
  ⛺️生存的理想,就是为了理想的生存!
引入

   Elasticsearch聚合查询是一种强盛的工具,允许我们对索引中的数据举行复杂的统计分析和盘算。本文将详细表明一个聚合查询示例,该查询用于统计满足特定条件的文档数量,并盘算其占总文档数量的百分比。
  

一、集群的概念

1.1 节点以及节点范例

Elasticsearch集群是由一个或多个节点构成的分布式体系,每个节点可以运行在差别的物理服务器或假造机上。节点可以分为差别的范例:
   如下图 ,就是一个三个节点构成的es集群,p0、p1、p2表现一个节点中的分片,R0、R1、R2表现分片对应的副本
  



  • 主节点(Master Node) :负责管理集群范围内的使用,如索引创建和节点参加等。通常情况下,发起集群中只有少数几个主节点。
  • 数据节点(Data Node) :存储索引数据及实行与数据相干的使用,如索引、搜索和聚合等。大多数情况下,数据节点也加入主节点推选。
  • 客户端节点(Client Node) :作为集群的接入点,用于转发哀求到数据节点或主节点,从而减轻数据节点和主节点的负载。
1.2 哀求和相应流程


  • 客户端发送哀求
    HTTP哀求:客户端通过发送HTTP哀求与Elasticsearch集群举行交互。哀求可以是读取使用(如搜索、获取文档)、写入使用(如索引新文档、更新文档)或管理使用(如创建索引、设置映射)。
   哀求路由:如果ES集群设置了客户端节点(client node),则客户端哀求起首到达客户端节点。客户端节点根据哀求范例和路由信息,决定将哀求发送到哪些节点实行。如果没有客户端节点,哀求会直接发送到恣意的数据节点或主节点上。
  

  • 节点吸收和处理惩罚哀求


  • 以下是一个简单的es集群架构:

二、集群的搭建

2.1 Elasticsearch集群搭建

在搭建Elasticsearch集群之前,确保你已经安装了Java情况。以下是根本步调:

  • 下载和安装Elasticsearch:
    1. bash
    2. wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.0-linux-x86_64.tar.gz
    3. tar -zxvf elasticsearch-7.0.0-linux-x86_64.tar.gz
    4. cd elasticsearch-7.0.0/
    复制代码
  • 设置Elasticsearch:编辑设置文件 config/elasticsearch.yml,设置节点名称、集群名称、网络绑定等。
    1. yaml
    2. cluster.name: my-cluster
    3. node.name: node-1
    4. network.host: 0.0.0.0
    复制代码
  • 启动Elasticsearch:
    1. bash
    2. ./bin/elasticsearch
    复制代码
    确保重复上述步调来设置和启动其他节点,以构成一个完备的集群。
2.2 Kibana安装

Kibana是Elasticsearch的可视化工具,用于查询和分析数据。安装步调如下:

  • 下载息争压Kibana:
    1. bash
    2. wget https://artifacts.elastic.co/downloads/kibana/kibana-7.0.0-linux-x86_64.tar.gz
    3. tar -zxvf kibana-7.0.0-linux-x86_64.tar.gz
    4. cd kibana-7.0.0-linux-x86_64/
    复制代码
  • 设置Kibana:编辑设置文件 config/kibana.yml,设置Elasticsearch的地点和端口。
    1. yaml
    2. server.host: "localhost"
    3. elasticsearch.hosts: ["http://localhost:9200"]
    复制代码
  • 启动Kibana:
    1. bash
    2. ./bin/kibana
    复制代码
    访问 http://localhost:5601 可以打开Kibana的Web界面。
2.3 X-pack安全认证

X-Pack提供了Elasticsearch的安全功能,包罗认证、授权、审计和SSL/TLS加密。安装和设置X-Pack安全认证步调如下:

  • 安装X-Pack插件:
    1. bash
    2. ./bin/elasticsearch
    3. -plugin install x-pack
    复制代码
  • 设置X-Pack安全:编辑Elasticsearch设置文件 config/elasticsearch.yml,设置用户名和暗码认证。
    1. yaml
    2. xpack.security.enabled: true
    复制代码
  • 设置初始暗码:
    1. bash
    2. ./bin/elasticsearch
    3. -setup-passwords interactive
    复制代码
    通过交互式下令设置Elasticsearch内置用户的暗码。
三、使用索引查询数据

3.1 创建索引

在Elasticsearch中,索引用于存储和构造数据。以下是创建用户和订单索引的示例:
  1. bash
  2. PUT /users
  3. {
  4.   "mappings": {
  5.     "properties": {
  6.       "user_id": { "type": "keyword" },
  7.       "name": { "type": "text" },
  8.       "email": { "type": "keyword" }
  9.     }
  10.   }
  11. }
  12. PUT /orders
  13. {
  14.   "mappings": {
  15.     "properties": {
  16.       "order_id": { "type": "keyword" },
  17.       "user_id": { "type": "keyword" },
  18.       "amount": { "type": "float" },
  19.       "timestamp": { "type": "date" }
  20.     }
  21.   }
  22. }
复制代码
3.2 索引示例数据

向创建的索引中插入一些示例数据,以便后续的统计演示:
  1. bash
  2. POST /users/_doc/1
  3. {
  4.   "user_id": "1",
  5.   "name": "Alice",
  6.   "email": "[email protected]"
  7. }
  8. POST /users/_doc/2
  9. {
  10.   "user_id": "2",
  11.   "name": "Bob",
  12.   "email": "[email protected]"
  13. }
  14. POST /orders/_doc/1
  15. {
  16.   "order_id": "1",
  17.   "user_id": "1",
  18.   "amount": 100.5,
  19.   "timestamp": "2024-07-01T10:00:00"
  20. }
  21. POST /orders/_doc/2
  22. {
  23.   "order_id": "2",
  24.   "user_id": "1",
  25.   "amount": 50.2,
  26.   "timestamp": "2024-07-01T11:00:00"
  27. }
  28. POST /orders/_doc/3
  29. {
  30.   "order_id": "3",
  31.   "user_id": "2",
  32.   "amount": 75.0,
  33.   "timestamp": "2024-07-01T12:00:00"
  34. }
复制代码
3.3 分析查询效果

实行聚合查询来盘算每个用户的订单数量:
  1. bash
  2. POST /orders/_search
  3. {
  4.   "size": 0,
  5.   "aggs": {
  6.     "users": {
  7.       "terms": {
  8.         "field": "user_id.keyword",
  9.         "size": 10
  10.       },
  11.       "aggs": {
  12.         "total_orders": {
  13.           "value_count": {
  14.             "field": "order_id.keyword"
  15.           }
  16.         }
  17.       }
  18.     }
  19.   }
  20. }
复制代码
查询效果会返回每个用户的订单数量统计:
  1. json
  2. {
  3.   "aggregations": {
  4.     "users": {
  5.       "buckets": [
  6.         {
  7.           "key": "1",
  8.           "doc_count": 2,
  9.           "total_orders": {
  10.             "value": 2
  11.           }
  12.         },
  13.         {
  14.           "key": "2",
  15.           "doc_count": 1,
  16.           "total_orders": {
  17.             "value": 1
  18.           }
  19.         }
  20.       ]
  21.     }
  22.   }
  23. }
复制代码
四、总结

通过本教程,你学习了怎样使用Elasticsearch集群索引数据,并通过聚合查询来统计多个数据。你如今应该可以或许明白Elasticsearch集群的根本概念、搭建步调以及怎样创建索引、插入数据和实行查询。继续探索Elasticsearch的强盛功能,可以资助你处理惩罚大规模数据并举行复杂的数据分析和统计。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表