聊一聊Elasticsearch的一些基本信息
一、Elasticsearch是什么
Elasticsearch简称ES,是一款分布式搜索引擎。它是在Apache Lucene基础之上采用Java语言开发的。
Elasticsearch的官方网站对它的解释是:Elasticsearch是一个分布式、RESTful的搜索和数据分析引擎。
通过上边的官方解释,我们可以看出ES提供两大功能:数据的搜索和分析。
二、Elasticsearch的使用场景
- 在线实时日志分析:从最初的ELK到目前的Elastic Stack,包含了在线日志采集、存储和分析等功能。
- 物联网数据监控
- 文献检索和文献计量
- 商务智能(business intelligence,BI)大屏展示
三、Elastic Stack
对于ES的接入方式来说,除了用自己手写的应用程序去写入ES这种方式以外,我们还以使用官方提供的数据采集工具以及第三方的ETL工具来把数据写入到ES中。
官方早期提供了Logstash来作为接入工具去完成进行数据采集和转换的工作。由于运行时比较消耗资源,官方后续推出了一系列命名包含beat的轻量级数据采集器,统称为Beats,我们可以理解为Beats分包了Logstash的数据采集功能。
我们可以通过Beats将采集到的数据数据先汇集到Logstash中再写入到ES,也可以直接通过Beats将采集到的数据直接写到ES中,如下图:


四、专有名词介绍
- 集群(cluster):多个安装Elasticsearch的服务器具有相同的集群名称,则这些服务器组成一个集群,统一对外提供服务。一个集群中有且只有一个主节点,当主节点挂掉了则会选举出一个新的主节点来维持集群的运转。
- 节点(node):一个安装了Elasticsearch的服务机就是一个节点,它是组成集群的基本单元。
- 索引(index):用来存储数据,可以简单的理解为关系型数据库中的表。
- 文档(document):写入索引的基本单元,一个文档就是索引中的一条数据。
- 分片(shard):对于一个索引来说,会有一个主分片和与它对应的零个或多个副本分片。一个分片本质上就是一个Luncene索引。为了保证分片在集群内分布均匀,分片会在集群中进行移动,这个过程就是分片的分配。索引的主分片和副本分片不能位于同一个节点上,我们要保证节点宕机的时候,主分片和副本分片不能同时丢失。
- 主分片(primary shard):负责将文档数据写入索引,同时将数据同步给副本分片。主分片的数量在创建索引的时候就确定了,不允许修改。通常主分片的数量与索引存储数据的数据量成正比。
- 副本分片(replica shard):作为主分片的一个副本,可以承担一部分数据查询的请求(提供搜索的吞吐量),还具有容灾备份的能力,当主分片丢失了(例如:所在节点宕机),副本分片可以被选举为新的主分片来保持数据的完整性。相较于主分片的数量确定后就不可修改,副本分片的数量可以随时修改。
- 分片恢复(shard recovery):将一个分片的数据同步到另外一个分片上的过程,称为分片恢复,这个过程通常伴随着创建和分配。只有等到分片恢复后,副本分片才能对外提供搜索服务。
- 索引缓冲区(index buffer):写入索引的数据会先写入索引缓冲区中,当缓冲区满了的时候,缓冲区中的数据才会被写到磁盘上。
- 传输模块(transport module):当一个节点接收到请求后无法处理或者无法单独处理的时候,会将这个请求转发给其他节点,节点之间相互通讯是通过传输模块来完成的。
- 网关模块 (gateway module):网关模块存储着集群的信息以及每个索引分片的持久化数据。默认使用的是本地网关,它会把数据存储到本地文件系统中。
- 节点发现模块(node discovery module):用于节点之间相互识别,将新的节点加入到集群中。
- 线程池(thread pool):ES内提供了很多用于处理不同操作的线程池,例如:analyze线程池用于处理文本分析的请求,write线程池用于处理索引数据的写入请求,search线程池用于处理搜索请求。
五、配置JVM的堆内存大小
在ES节点上有三个重要的配置文件: elasticsearch.yml用于配置节点的参数、jvm.options用来配置Elasticsearch运行时占用的堆内存大小、log4j2.properties用来配置Elasticsearch运行时的日志参数。
我们通过jvm.options配置文件来设置ES运行时JVM堆内存的大小。如果JVM堆内存设置过小,可能查询时内存不够导致宕机;如果设置过大,又会超过JVM用于压缩对象指针的阈值而导致内存浪费。
设置JVM堆内存大小需要满足以下2个条件
-
堆内存最大不得超过开启压缩对象指针的阈值,一般最大可以是31GB(不同的系统可能有区别)。
-
在堆内存不超过上述阈值的前提下,其大小可以设置为其所在节点内存的一半。
例如,你的服务器有16GB内存,就可以把堆内存大小设置为8GB,但是如果服务器内存为128GB,则通常堆内存最多只能设置为31GB。
默认JVM堆内存的大小为1G。
六、参考文献
- 《Elasticsearch数据搜索与分析实战》——王深湛
下一篇:《聊一聊Elasticsearch的原理与机制》
相关文章:
聊一聊Elasticsearch的一些基本信息
一、Elasticsearch是什么 Elasticsearch简称ES,是一款分布式搜索引擎。它是在Apache Lucene基础之上采用Java语言开发的。 Elasticsearch的官方网站对它的解释是:Elasticsearch是一个分布式、RESTful的搜索和数据分析引擎。 通过上边的官方解释&#…...
Unity 两篇文章熟悉所有编辑器拓展关键类 (上)
本专栏基础资源来自唐老狮和siki学院,仅作学习交流使用,不作任何商业用途,吃水不忘打井人,谨遵教诲 编辑器扩展内容实在是太多太多了(本篇就有五千字) 所以分为两个篇章而且只用一些常用api举例,…...
Spring SPI、Solon SPI 有点儿像(Maven 与 Gradle)
一、什么是 SPI SPI 全名 Service Provider interface,翻译过来就是“服务提供接口”。基本效果是,申明一个接口,然后通过配置获取它的实现,进而实现动态扩展。 Java SPI 是 JDK 内置的一种动态加载扩展点的实现。 一般的业务代…...
合并排序算法(C语言版)
#include <stdio.h> void Copy(int *a, int *b, int left, int right) { int i; for(i0;i<right-left1;i) { a[ileft] b[i]; } } // 将 a[left,middle] 和 a[middle1,right]合并到 b[left, right]中 void Merge(int *a, int left, int midd…...
C++——输入一行文字,找出其中的大写字母、小写字母、空格数字以及其他字符各有多少。用指针或引用方法处理。
没注释的源代码 #include <iostream> using namespace std; int main() { char c; int ul0,ll0,sp0,di0,other0; cout<<"please input script c:"; while(cin.get(c)) { if(c\n) break; else if(c>A&&…...
【skywalking】maximum query complexity exceeded 3336 > 3000
问题 skywalking相关版本信息 jdk:17skywalking:10.1.0apache-skywalking-java-agent:9.3.0ElasticSearch : 8.8.2 问题描述 maximum query complexity exceeded 3336 > 3000 最大查询复杂度超过3336>3000 可能原因 查询条件过于复…...
开源一个开发的聊天应用与AI开发框架,集成 ChatGPT,支持私有部署的源码
大家好,我是一颗甜苞谷,今天分享一个开发的聊天应用与AI开发框架,集成 ChatGPT,支持私有部署的源码。 介绍 当前系统集成了ChatGPT的聊天应用,不仅提供了基本的即时通讯功能,还引入了先进的AI技术&#x…...
开发了一个成人学位英语助考微信小程序
微信小程序名称:石榴英语 全称:石榴英语真题助手 功能定位 北京成人学士学位英语辅助学习工具,包含记高频单词,高频词组,专项练习,模拟考试等功能。 开发背景 个人工作需要提高学习英文水平ÿ…...
LeetCode16:最接近的三数之和
原题地址:. - 力扣(LeetCode) 题目描述 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1…...
VisualStudio2022配置2D图形库SFML
文章目录 1. 下载安装SFML库2. 创建C项目并配置SFML配置include目录和库目录链接SFML库配置动态链接库 3. 测试 1. 下载安装SFML库 SFML(Simple and Fast Multimedia Library)C库,适合2D游戏和图形界面,提供了以下模块࿱…...
「Mac畅玩鸿蒙与硬件4」鸿蒙开发环境配置篇4 - DevEco Studio 高效使用技巧
本篇将进一步介绍如何在 DevEco Studio 中高效使用各种功能,通过掌握快捷键、代码补全、调试工具等,帮助开发者在鸿蒙应用开发中大幅提升工作效率。 关键词 DevEco Studio快捷键代码补全调试工具项目导航 一、快捷键与高效操作 快捷键是提升开发效率的…...
构建生产级的 RAG 系统
对 RAG 应用程序进行原型设计很容易,但要使其高性能、健壮且可扩展到大型知识语料库却很困难。 本指南包含各种提示和技巧,以提高 RAG 工作流程的性能。我们首先概述一些通用技术 - 它们按照简单到复杂的顺序进行排列。然后,我们将更深入地研…...
完全透彻了解一个asp.net core MVC项目模板2
这是《完全透彻了解一个asp.net core MVC项目模板》的第二篇,如果你直接进入了本篇博文而不知道上下文,请先阅读《完全透彻了解一个asp.net core MVC项目模板》的第一篇。 文章目录 一、补充几个问题1、有关导航链接和Tag Helper2、_ViewStart.cshtml与…...
uniapp 如何调用音频
uniapp调用音频 button点击 <view><button click"startPlay">开始播放</button></view>方法实现 startPlay() { const innerAudioContext uni.createInnerAudioContext();innerAudioContext.src /static/sounds/oqc.mp3;innerAudioContex…...
在Facebook运营中使用住宅IP的重要性
在当前社交媒体的浪潮中,Facebook作为全球最大的社交网络之一,吸引了数以亿计的用户。为了在这一平台上实现有效的运营和推广,越来越多的博主和营销人员正在寻求最佳的养号策略。其中,IP地址的选择显得尤为重要,尤其是…...
EJB项目如何升级SpringCloud
记录某金融机构老项目重构升级为微服务过程1 如何从EJB架构拆分微服务 这个非常有趣的过程,整个过程耗时大致接近半年时光,需要考虑到重构升级保留原来的业务线,而且还要考虑后续的维护成本,保留现有的数据库表结构,…...
HTTPS 协议原理
一.HTTPS的定义 大家在刚开始学习的时候是不是也是非常好奇HTTP与HTTPS之间有什么区别和联系,两者都是应用层协议,而HTTPS是在HTTP的基础上引入了加密层,从而将HTTP的明文传输进行加密,保障数据的安全性 二.加密与解密 定义&#…...
Vxe UI 表格行编辑(默认不显示编辑框,点击后可编辑)
效果: HTML代码:(type"integer"为这个,是限制只能输入正整数或负整数,英文和汉字自动转成0) <vxe-tableshow-overflowkeep-sourcev-loading"loading":data"ruleList"ref"Table":row-config"{isHover: true}"height"…...
移远通信闪耀2024香港秋灯展,以丰富的Matter产品及方案推动智能家居产业发展
10月27-30日,2024香港国际秋季灯饰展在香港会议展览中心盛大开展。 作为全球领先的物联网整体解决方案供应商,移远通信再次亮相,并重点展示了旗下支持Matter协议以及亚马逊ACK ( Alexa Connect Kit ) SDK for Matter方案的Wi-Fi模组、低功耗蓝…...
爬虫利器playwright
是什么 它是微软在 2020 年初开源的新一代自动化测试工具,其功能和 selenium 类似,都可以驱动浏览器进行各种自动化操作。还可以录制脚本 案列-01 运行之后我们用它自动打开的谷歌浏览器,打开百度,输入漂亮小姐姐并查找&#x…...
昆仑通态触摸屏分期付款案例程序探索
昆仑通态触摸屏内分期付款案例程序,包括昆仑通态最新组态软件在自动化控制和人机交互领域,昆仑通态触摸屏因其强大的功能和便捷的操作而备受青睐。今天咱们就来聊聊在昆仑通态触摸屏内实现分期付款案例程序,还会涉及昆仑通态最新组态软件的使…...
从零到一:HNU计算机系统实验原型机vspm1.0实战与miniCC编译初探
1. 初识HNU计算机系统实验原型机vspm1.0 第一次接触vspm1.0原型机时,我完全被这个精巧的教学工具吸引了。作为一个计算机系统初学者,最让我惊喜的是它用不到200行汇编指令就完整模拟了冯诺伊曼体系结构的核心要素。这台原型机配备了6个通用寄存器&#x…...
mFS:面向EEPROM的轻量级嵌入式文件系统
1. mFS 文件系统概述mFS(micro File System)是一个专为串行 EEPROM 存储器芯片设计的轻量级嵌入式文件系统库。它不依赖于任何操作系统或硬件抽象层,以纯 C 实现,代码体积紧凑(典型编译后 ROM 占用 < 4 KBÿ…...
认知雷达前沿技术 从认知到量子:雷达技术的跨范式融合
目录 二、知识图谱解析 关键概念关联说明 三、章节结构层级 四、概念关联与技术成熟度分析 五、核心学术观点提炼 六、关键术语中英对照表 本章探讨了认知雷达(Cognitive Radar)与量子雷达(Quantum Radar)的融合路径,构建了一个从生物启发到量子极限的雷达技术演进框架。…...
三电平 VSG 构网型变流器仿真分析
三电平 VSG 构网型变流器仿真 仿真使用双闭环控制,svpwm 调制 [1]包含 LC 滤波器 [2]包含中点电位平衡控制 [3]包含负荷投切与离网切换 基本工况:0—3s 功率指令 170kw3-6s 功率指令 140kw电网频率在 1-2s 暂降 0.2hz,vsg 通过 增发有功维持…...
FPGA DSP48E2实战避坑:为什么你的32x32定点乘法性能上不去?从原理到优化全解析
FPGA DSP48E2实战避坑:为什么你的32x32定点乘法性能上不去?从原理到优化全解析 在FPGA信号处理系统设计中,32x32定点乘法器是构建数字滤波器、FFT核心和矩阵运算的基础模块。许多工程师在使用Xilinx UltraScale系列FPGA的DSP48E2 Slice时&…...
Step3-VL-10B-Base与卷积神经网络结合:图像理解性能提升
Step3-VL-10B-Base与卷积神经网络结合:图像理解性能提升 在图像识别任务中,传统卷积神经网络(CNN)虽然擅长提取局部特征,但在处理复杂语义理解、多模态上下文推理等任务时往往表现有限。而视觉-语言大模型(…...
STM32F1轻量USB复合设备库:HID+MIDI+MSC一体化实现
1. 项目概述USBComposite for STM32F1 是一个面向 STM32F1 系列微控制器(基于 ARM Cortex-M3 内核)的轻量级、可裁剪式 USB 复合设备固件库。其核心目标是在资源受限的 F1 平台(典型 Flash ≤ 64KB,SRAM ≤ 20KB)上&am…...
通义千问2.5-7B-Instruct量化实测:4GB显存就能跑,RTX 3060流畅运行
通义千问2.5-7B-Instruct量化实测:4GB显存就能跑,RTX 3060流畅运行 1. 引言:为什么选择通义千问2.5-7B-Instruct 在本地部署大语言模型时,我们常常面临显存不足和性能瓶颈的问题。通义千问2.5-7B-Instruct作为阿里云2024年9月发…...
从油电耦合逻辑到动力分配算法,Dmi混动系统的仿真总让人头秃。今天咱们直接扒开Simulink模型的外壳,看看这套正向开发框架怎么把混动车的灵魂装进代码里
MTALAB/SIMULINK搭建的 Dmi 混动系统整车仿真模型 1、p13 混动系统正向仿真的模型 2、包含整车各系统完整的零部件建模和参数配置 3、支持整车不同性能指标分析与验证打开模型库你会发现,这根本不是个玩具车——发动机MAP图用三维查表实现,电池SOC估算嵌…...
