马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
🎬 鸽芷咕:个人主页
🔥 个人专栏: 《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),则客户端哀求起首到达客户端节点。客户端节点根据哀求范例和路由信息,决定将哀求发送到哪些节点实行。如果没有客户端节点,哀求会直接发送到恣意的数据节点或主节点上。
二、集群的搭建
2.1 Elasticsearch集群搭建
在搭建Elasticsearch集群之前,确保你已经安装了Java情况。以下是根本步调:
- 下载和安装Elasticsearch:
- bash
- wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.0-linux-x86_64.tar.gz
- tar -zxvf elasticsearch-7.0.0-linux-x86_64.tar.gz
- cd elasticsearch-7.0.0/
复制代码 - 设置Elasticsearch:编辑设置文件 config/elasticsearch.yml,设置节点名称、集群名称、网络绑定等。
- yaml
- cluster.name: my-cluster
- node.name: node-1
- network.host: 0.0.0.0
复制代码 - 启动Elasticsearch:
确保重复上述步调来设置和启动其他节点,以构成一个完备的集群。
2.2 Kibana安装
Kibana是Elasticsearch的可视化工具,用于查询和分析数据。安装步调如下:
- 下载息争压Kibana:
- bash
- wget https://artifacts.elastic.co/downloads/kibana/kibana-7.0.0-linux-x86_64.tar.gz
- tar -zxvf kibana-7.0.0-linux-x86_64.tar.gz
- cd kibana-7.0.0-linux-x86_64/
复制代码 - 设置Kibana:编辑设置文件 config/kibana.yml,设置Elasticsearch的地点和端口。
- yaml
- server.host: "localhost"
- elasticsearch.hosts: ["http://localhost:9200"]
复制代码 - 启动Kibana:
访问 http://localhost:5601 可以打开Kibana的Web界面。
2.3 X-pack安全认证
X-Pack提供了Elasticsearch的安全功能,包罗认证、授权、审计和SSL/TLS加密。安装和设置X-Pack安全认证步调如下:
- 安装X-Pack插件:
- bash
- ./bin/elasticsearch
- -plugin install x-pack
复制代码 - 设置X-Pack安全:编辑Elasticsearch设置文件 config/elasticsearch.yml,设置用户名和暗码认证。
- yaml
- xpack.security.enabled: true
复制代码 - 设置初始暗码:
- bash
- ./bin/elasticsearch
- -setup-passwords interactive
复制代码 通过交互式下令设置Elasticsearch内置用户的暗码。
三、使用索引查询数据
3.1 创建索引
在Elasticsearch中,索引用于存储和构造数据。以下是创建用户和订单索引的示例:
- bash
- PUT /users
- {
- "mappings": {
- "properties": {
- "user_id": { "type": "keyword" },
- "name": { "type": "text" },
- "email": { "type": "keyword" }
- }
- }
- }
- PUT /orders
- {
- "mappings": {
- "properties": {
- "order_id": { "type": "keyword" },
- "user_id": { "type": "keyword" },
- "amount": { "type": "float" },
- "timestamp": { "type": "date" }
- }
- }
- }
复制代码 3.2 索引示例数据
向创建的索引中插入一些示例数据,以便后续的统计演示:
- bash
- POST /users/_doc/1
- {
- "user_id": "1",
- "name": "Alice",
- "email": "[email protected]"
- }
- POST /users/_doc/2
- {
- "user_id": "2",
- "name": "Bob",
- "email": "[email protected]"
- }
- POST /orders/_doc/1
- {
- "order_id": "1",
- "user_id": "1",
- "amount": 100.5,
- "timestamp": "2024-07-01T10:00:00"
- }
- POST /orders/_doc/2
- {
- "order_id": "2",
- "user_id": "1",
- "amount": 50.2,
- "timestamp": "2024-07-01T11:00:00"
- }
- POST /orders/_doc/3
- {
- "order_id": "3",
- "user_id": "2",
- "amount": 75.0,
- "timestamp": "2024-07-01T12:00:00"
- }
复制代码 3.3 分析查询效果
实行聚合查询来盘算每个用户的订单数量:
- bash
- POST /orders/_search
- {
- "size": 0,
- "aggs": {
- "users": {
- "terms": {
- "field": "user_id.keyword",
- "size": 10
- },
- "aggs": {
- "total_orders": {
- "value_count": {
- "field": "order_id.keyword"
- }
- }
- }
- }
- }
- }
复制代码 查询效果会返回每个用户的订单数量统计:
- json
- {
- "aggregations": {
- "users": {
- "buckets": [
- {
- "key": "1",
- "doc_count": 2,
- "total_orders": {
- "value": 2
- }
- },
- {
- "key": "2",
- "doc_count": 1,
- "total_orders": {
- "value": 1
- }
- }
- ]
- }
- }
- }
复制代码 四、总结
通过本教程,你学习了怎样使用Elasticsearch集群索引数据,并通过聚合查询来统计多个数据。你如今应该可以或许明白Elasticsearch集群的根本概念、搭建步调以及怎样创建索引、插入数据和实行查询。继续探索Elasticsearch的强盛功能,可以资助你处理惩罚大规模数据并举行复杂的数据分析和统计。
|