Elasticsearch实战教程:如何使用集群索引数据来进行统计多个数据?


在这里插入图片描述

🎬 鸽芷咕:个人主页

 🔥 个人专栏: 《C++干货基地》《粉丝福利》

⛺️生活的理想,就是为了理想的生活!

引入

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

文章目录

  • 引入
  • 一、集群的概念
    • 1.1 节点以及节点类型
    • 1.2 请求和响应流程
  • 二、集群的搭建
    • 2.1 Elasticsearch集群搭建
    • 2.2 Kibana安装
    • 2.3 X-pack安全认证
  • 三、利用索引查询数据
    • 3.1 创建索引
    • 3.2 索引示例数据
    • 3.3 解析查询结果
  • 四、总结

一、集群的概念

1.1 节点以及节点类型

Elasticsearch集群是由一个或多个节点组成的分布式系统,每个节点可以运行在不同的物理服务器或虚拟机上。节点可以分为不同的类型:

如下图 ,就是一个三个节点组成的es集群,p0、p1、p2表示一个节点中的分片,R0、R1、R2表示分片对应的副本

在这里插入图片描述

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

1.2 请求和响应流程

  1. 客户端发送请求
    HTTP请求:客户端通过发送HTTP请求与Elasticsearch集群进行交互。请求可以是读取操作(如搜索、获取文档)、写入操作(如索引新文档、更新文档)或管理操作(如创建索引、设置映射)。

请求路由:如果ES集群配置了客户端节点(client node),则客户端请求首先到达客户端节点。客户端节点根据请求类型和路由信息,决定将请求发送到哪些节点执行。如果没有客户端节点,请求会直接发送到任意的数据节点或主节点上。

  1. 节点接收和处理请求
  • 以下是一个简单的es集群架构:

在这里插入图片描述

二、集群的搭建

2.1 Elasticsearch集群搭建

在搭建Elasticsearch集群之前,确保你已经安装了Java环境。以下是基本步骤:

  1. 下载和安装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/
    
  2. 配置Elasticsearch:编辑配置文件 config/elasticsearch.yml,配置节点名称、集群名称、网络绑定等。

    yaml
    cluster.name: my-cluster
    node.name: node-1
    network.host: 0.0.0.0
    
  3. 启动Elasticsearch

    bash
    ./bin/elasticsearch
    

    确保重复上述步骤来配置和启动其他节点,以组成一个完整的集群。

2.2 Kibana安装

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

  1. 下载和解压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/
    
  2. 配置Kibana:编辑配置文件 config/kibana.yml,设置Elasticsearch的地址和端口。

    yaml
    server.host: "localhost"
    elasticsearch.hosts: ["http://localhost:9200"]
    
  3. 启动Kibana

    bash
    ./bin/kibana
    

    访问 http://localhost:5601 可以打开Kibana的Web界面。

2.3 X-pack安全认证

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

  1. 安装X-Pack插件

    bash
    ./bin/elasticsearch-plugin install x-pack
    
  2. 配置X-Pack安全:编辑Elasticsearch配置文件 config/elasticsearch.yml,配置用户名和密码认证。

    yaml
    xpack.security.enabled: true
    
  3. 设置初始密码

    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": "alice@example.com"
}POST /users/_doc/2
{"user_id": "2","name": "Bob","email": "bob@example.com"
}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的强大功能,可以帮助你处理大规模数据并进行复杂的数据分析和统计。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1472461.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

九、SSM整合介绍-Eclipse整合(2)

🌻🌻目录 一、SSM 整合二、SSM整合入门三、整合的实现3.1、创建数据库以及表3.2、创建项目3.3、依赖3.4、项目配置3.5、项目测试 一、SSM 整合 1、整合:将多种框架合并到一起,完成项目需求 2、SSM整合:Springmvc Spri…

竞赛选题 协同过滤电影推荐系统

文章目录 1 简介1 设计概要2 课题背景和目的3 协同过滤算法原理3.1 基于用户的协同过滤推荐算法实现原理3.1.1 步骤13.1.2 步骤23.1.3 步骤33.1.4 步骤4 4 系统实现4.1 开发环境4.2 系统功能描述4.3 系统数据流程4.3.1 用户端数据流程4.3.2 管理员端数据流程 4.4 系统功能设计 …

介绍一款Java开发的商业开源MES系统

介绍一款Java开发的开源MES系统,万界星空科技开源的MES系统。该系统基于Java开发,具有广泛的适用性和高度的可定制性,能够满足不同行业、不同规模企业的智能制造需求。 一、系统概述 万界星空科技开源的MES系统是一款面向制造企业车间执行层…

代码随想录算法训练营第71天:路径算法[1]

代码随想录算法训练营第71天:路径算法 ‍ Bellman_ford 算法精讲 卡码网:94. 城市间货物运输 I(opens new window) 题目描述 某国为促进城市间经济交流,决定对货物运输提供补贴。共有 n 个编号为 1 到 n 的城市,通过道路网络…

笔记本休眠后自动关闭所有程序

关于主动进入休眠后,笔记本过一晚第二天会关闭所有程序,开始还以为,笔记本没电了,或者公司停电了导致笔记本没电关机,排查后发现不是。。。 原因是笔记本电脑默认设置休眠20分钟后自动关闭硬盘。 解决方案&#xff1a…

抖音短视频矩阵系统源代码开发-oem搭建

抖音矩阵号管理系统是一个综合性平台,旨在为企业、机构和个人提供全面的抖音账号管理服务。系统具备以下核心功能: 1. 用户管理:本系统支持多用户操作,允许管理员为每个用户分配专属的抖音矩阵号,实现个性化管理。 2.…

一站式采购!麒麟信安CentOS安全加固套件上架华为云云商店

近日,麒麟信安CentOS安全加固套件正式上架华为云云商店,用户可登录华为云官网搜索“CentOS安全加固”直接采购,一站式获取所需资源。 麒麟信安CentOS安全加固套件已上架华为云 https://marketplace.huaweicloud.com/contents/9fe76553-8d87-…

山东益康,聚焦绿葆医院场景媒体,用爱服务人类健康

山东益康集团创建于1983年,发展成为集药品研发生产、销售、特医功能食品、精细化工、医疗防护产品等多产业经营为一体的省级企业集团。益康集团紧跟国家发展战略,满足民众日益增长的健康需求,将食品生产向特医保健功能食品转型升级&#xff0…

智能家居安防系统教学解决方案

前言 随着科技的不断进步和智能家居概念的深入人心,智能家居安防系统作为智能家居领域的重要组成部分,其重要性日益凸显。智能家居安防系统不仅能够提供环境和人员的监测功能,还能够采取措施降低或避免人员伤亡及财产损失。因此,…

使用大漠插件进行京东联盟转链

由于之前开发了一套使用api转链的接口在前面几个月失效了。因为京东联盟系统升级,导致之前可以转的链接现在必须要升级权限才可以。但是升级条件对于我们这些自己买东西转链想省点钱的人来说基本上达不到。 所以,基于这种情况。我之前研究过大漠插件&am…

Twitter群发消息API接口的功能?如何配置?

Twitter群发消息API接口怎么申请?如何使用API接口? 为了方便企业和开发者有效地与用户互动,Twitter提供了各种API接口,其中Twitter群发消息API接口尤为重要。AokSend将详细介绍Twitter群发消息API接口的功能及其应用场景。 Twit…

极狐GitLab 将亮相2024空天信息大会暨数字地球生态峰会,携手中科星图赋能空天行业开发者

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab :https://gitlab.cn/install?channelcontent&utm_sourcecsdn 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署…

基于正点原子的FreeRTOS学习笔记——任务时间管理API实验

目录 一、任务时间管理API介绍 二、宏定义修改 三、实验程序 3.1、时基定时器配置 3.2、任务程序 四、实验现象 一、任务时间管理API介绍 在官方文档的API引用任务实用程序中可以找到此API的介绍 https://www.freertos.org/zh-cn-cmn-s/a00021.html#vTaskGetRunTimeSta…

23_嵌入式系统存储体系

目录 高速缓存cache cache的作用 统一的cache和独立的数据/程序cache CPU更新cache和主存的方法 读操作分配cache和写操作分配cache cache工作原理 存储管理单元 MMU特点 TLB MMU内存块和域 MMU的地址变换过程 使能MMU时存储访问过程 禁止MMU时存储访问过程 快速上…

3033. 修改矩阵 Easy

给你一个下标从 0 开始、大小为 m x n 的整数矩阵 matrix ,新建一个下标从 0 开始、名为 answer 的矩阵。使 answer 与 matrix 相等,接着将其中每个值为 -1 的元素替换为所在列的 最大 元素。 返回矩阵 answer 。 示例 1: 输入:…

【基于R语言群体遗传学】-2-模拟基因型(simulating genotypes)

书接上文,我们昨天讨论了遗传的哈代温伯格比例: 【基于R语言群体遗传学】-1-哈代温伯格基因型比例-CSDN博客 接下来,如果我们能够模拟一个过程并观察模拟结果与我们预期的是否相符,这通常有助于指导我们对这个过程的直观感觉。让…

Mysql笔记-v2

零、 help、\h、? 调出帮助 mysql> \hFor information about MySQL products and services, visit:http://www.mysql.com/ For developer information, including the MySQL Reference Manual, visit:http://dev.mysql.com/ To buy MySQL Enterprise support, training, …

【刷题笔记(编程题)05】另类加法、走方格的方案数、井字棋、密码强度等级

1. 另类加法 给定两个int A和B。编写一个函数返回AB的值,但不得使用或其他算数运算符。 测试样例: 1,2 返回:3 示例 1 输入 输出 思路1: 二进制0101和1101的相加 0 1 0 1 1 1 0 1 其实就是 不带进位的结果1000 和进位产生的1010相加 无进位加…

grpc-go服务端接口添加

【1】新建一个目录whgserviceproto,目录下新建一个proto包:whgserviceproto.proto (注意目录和包名称保持一致) //协议为proto3 syntax "proto3"; // 指定生成的Go代码在你项目中的导入路径 option go_package"…

【数据结构】06.栈队列

一、栈 1.1栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈&#…