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

news2024/12/30 3:22:07

在这里插入图片描述

🎬 鸽芷咕:个人主页

 🔥 个人专栏: 《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.coloradmin.cn/o/1896812.html

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

相关文章

【分布式系统五】监控平台Zabbix实际监控运用(命令+截图详细版)

目录 一.Zabbix 监控 Windows 1.安装zabbix 2.Web 页面添加主机,关联模板 二.Zabbix 监控 Java 应用 1.安装tomcat 2.服务端安装 zabbix-java-gateway 3.Web 页面添加主机,关联模板 三.Zabbix 监控 SNMP 1.服务端安装 snmp 监控程序 2.修改 sn…

小型全自动气象站的知识分享

TH-QC5小型全自动气象站具有便携式一体化结构设计,外形美观,安装方便简捷,可靠运行于各种恶劣的野外环境。它能够实时监测温度、湿度、风速、风向、雨量、气压、光照等多种气象参数,并且这些气象观测要素的配置方式可以根据项目的…

stm32定时器与pwm波

文章目录 4 TIM4.1 SysTick系统定时器4.2 TIM定时器中断与微秒级延时4.3 TIM使用PWM波4.3.1 PWM介绍4.3.2 无源蜂鸣器实现 4.4 TIM ,PWM常用函数 4 TIM 4.1 SysTick系统定时器 ​ Systick系统滴答,(同时他有属于自己的中断,可以利用它来做看…

OceanMind海睿思成功举办“数据要素×人工智能” 研讨会,荣获上海数交所授牌

近日,由南京东南人工智能产业链供应链创新链党建联盟、上海数据交易所主办,中新赛克承办的“数据要素人工智能”行业应用研讨会在南京成功举办。 本次活动是东南人工智能产业链供应链创新链党建联盟2024年度“人工智能人才服务行动项目”第二期活动。会议…

环境检测聚四氟乙烯微波消解罐 特氟龙反应釜 适用于COD测定

COD消解罐是实验室中用于测定水样中化学需氧量(Chemical Oxygen Demand,简称COD)的一种专用设备。化学需氧量是衡量水体污染程度的一个重要参数,它表示在一定条件下,水样中的有机物质和部分无机物质被氧化的程度。以下…

linux——小细节(Makefile)(gdb)

一、makefile a.out:main.c func.cgcc main.c func.cclean:rm a.out a.out:main.c func.cgcc $^ -o $clean:rm a.out SRCmain.c func.c OBJa.out CCgcc FLAG -g -lpthread $(OBJ):$(SRC)$(CC) $(SRC) $(FLAG)clean:rm $(OBJ) 二、gdb

玩客云刷Armbian安装docker、alist、OpenWrt、Aria2等教程及所需文件(内容详细)

这篇教程主要是本人在这里面踩的坑比较多,网上的教程很多,感觉都不太详细,分享一下自己的经验。 注意本教程的图片都是后期补的,可能与原文内容不符,仅供参考,图片里面会出现小雅,memos笔记&am…

记录第一次写脚本

使用csh语言,Linux系统操作的 写和执行csh(C Shell)脚本不需要额外的软件,只需要一个支持csh的终端环境。 1.检查是否安装了C Shell 在终端terminal运行以下命令 which csh 如果返回路径,比如/bin/csh&#xff0c…

昇思25天学习打卡营第17天|GAN图像生成

模型简介 GAN模型的核心在于提出了通过对抗过程来估计生成模型这一全新框架。在这个框架中,将会同时训练两个模型——捕捉数据分布的生成模型G和估计样本是否来自训练数据的判别模型D 。 在训练过程中,生成器会不断尝试通过生成更好的假图像来骗过判别…

怎么在表格后添加文字行行

Ctrl Shift 回车 解决方案 在表格末尾添加一行(表格行)。 (此时光标应该默认在这个新行中,如果没有,自己手动点一下) 按 Ctrl Shift 回车 将此行与前面的表格拆分开,中间会出现一个空文本行…

离散傅里叶变换(Discrete Fourier Transform,DFT)

离散傅里叶变换(Discrete Fourier Transform,DFT)是信号分析中的一种基本方法,它将离散时序信号从时间域变换到频率域,是傅里叶变换在时域和频域都呈现离散的形式。以下是关于离散傅里叶变换的详细介绍: 一…

尽量不写一行if...elseif...写出高质量可持续迭代的项目代码

背景 无论是前端代码还是后端代码,都存在着定位困难,不好抽离,改造困难的问题,造成代码开发越来越慢,此外因为代码耦合较高,总是出现改了一处地方,然后影响其他地方,要么就是要修改…

文本超长省略的几种方式(vue)

第一种&#xff0c;纯css 在给容器设置宽度后&#xff0c;使用css来省略文本超长部分&#xff0c;但是这样就看不到全部的内容 <template><div class"content"><div class"text">{{ text }}</div></div> </template>&…

ubuntu 安装说明

最近准备学习Linux&#xff0c;所以下载了最新的ubuntu server版本24.04&#xff0c;将安装步骤记录下来供参考。 1.安装 挂载光驱和iso文件&#xff0c;启动虚拟机。启动后&#xff0c;你会看到 GRUB 菜单上有两个选项&#xff1a; Try or Install Ubuntu Server 和 Test mem…

防水M7/8“航空法兰插座端子

防水M7/8"航空法兰插座广泛应用于传感器与执行器、电机马达、包装与传送系统、户外LED模块、轨道交通、船舶雷达与导航&#xff0c;以及现场总线DeviceNet与NMEA 2000开放型网络系统等应用领域。M7/8"插座作为一种常见的电气连接器件&#xff0c;在传感器领域中扮演着…

快手矩阵系统源码:技术优势解析

在短视频和直播行业迅猛发展的今天&#xff0c;快手凭借其强大的矩阵系统源码&#xff0c;为用户提供了多端管理、多账号管理、素材管理、视频批量上传、AI视频制作和定时发布等一系列高效功能。本文将深入探讨快手矩阵系统源码的多项优势&#xff0c;以及这些功能如何助力内容…

如何改善提示词,让 GPT-4 更高效准确地把视频内容整体转换成文章?

&#xff08;注&#xff1a;本文为小报童精选文章。已订阅小报童或加入知识星球「玉树芝兰」用户请勿重复付费&#xff09; 让我们来讨论一下大语言模型应用中的一个重要原则 ——「欲速则不达」。 作为一个自认为懒惰的人&#xff0c;我一直有一个愿望&#xff1a;完成视频制作…

气象观测站:观测和记录各种气象要素

在广袤无垠的蓝天下&#xff0c;气象观测站如同一个个静默的守护者&#xff0c;默默记录着风云变幻&#xff0c;守护着大地的安宁。 一、气象观测站&#xff1a;守护天空的“千里眼” 气象观测站&#xff0c;顾名思义&#xff0c;就是专门用于观测和记录各种气象要素的站点。它…

UVa1265/LA4848 Tour Belt

UVa1265/LA4848 Tour Belt 题目链接题意分析AC 代码 题目链接 本题是2010年icpc亚洲区域赛大田赛区的F题 题意 给出一个有n个结点m条边的加权无向图G&#xff08;2≤n≤5000&#xff0c;1≤m≤n(n-1)/2&#xff09;&#xff0c;满足如下条件的结点集B&#xff08;2≤|B|≤n&am…

2025深圳国际消费电子展览会

2025深圳国际消费电子展览会 时间&#xff1a;2025年06月25-27日 地点&#xff1a;深圳国际会展中心(新馆) 详询主办方陆先生 I38&#xff08;前三位&#xff09; I82I&#xff08;中间四位&#xff09; 9I72&#xff08;后面四位&#xff09; 展会介绍&#xff1a; 20…