当前位置: 首页 > news >正文

聊一聊Elasticsearch的一些基本信息

一、Elasticsearch是什么

Elasticsearch简称ES,是一款分布式搜索引擎。它是在Apache Lucene基础之上采用Java语言开发的。

Elasticsearch的官方网站对它的解释是:Elasticsearch是一个分布式、RESTful的搜索和数据分析引擎。

通过上边的官方解释,我们可以看出ES提供两大功能:数据的搜索和分析。

二、Elasticsearch的使用场景

  1. 在线实时日志分析:从最初的ELK到目前的Elastic Stack,包含了在线日志采集、存储和分析等功能。
  2. 物联网数据监控
  3. 文献检索和文献计量
  4. 商务智能(business intelligence,BI)大屏展示

三、Elastic Stack

对于ES的接入方式来说,除了用自己手写的应用程序去写入ES这种方式以外,我们还以使用官方提供的数据采集工具以及第三方的ETL工具来把数据写入到ES中。

官方早期提供了Logstash来作为接入工具去完成进行数据采集和转换的工作。由于运行时比较消耗资源,官方后续推出了一系列命名包含beat的轻量级数据采集器,统称为Beats,我们可以理解为Beats分包了Logstash的数据采集功能。

我们可以通过Beats将采集到的数据数据先汇集到Logstash中再写入到ES,也可以直接通过Beats将采集到的数据直接写到ES中,如下图:
在这里插入图片描述
在这里插入图片描述

四、专有名词介绍

  1. 集群(cluster):多个安装Elasticsearch的服务器具有相同的集群名称,则这些服务器组成一个集群,统一对外提供服务。一个集群中有且只有一个主节点,当主节点挂掉了则会选举出一个新的主节点来维持集群的运转。
  2. 节点(node):一个安装了Elasticsearch的服务机就是一个节点,它是组成集群的基本单元。
  3. 索引(index):用来存储数据,可以简单的理解为关系型数据库中的表。
  4. 文档(document):写入索引的基本单元,一个文档就是索引中的一条数据。
  5. 分片(shard):对于一个索引来说,会有一个主分片和与它对应的零个或多个副本分片。一个分片本质上就是一个Luncene索引。为了保证分片在集群内分布均匀,分片会在集群中进行移动,这个过程就是分片的分配。索引的主分片和副本分片不能位于同一个节点上,我们要保证节点宕机的时候,主分片和副本分片不能同时丢失。
  6. 主分片(primary shard):负责将文档数据写入索引,同时将数据同步给副本分片。主分片的数量在创建索引的时候就确定了,不允许修改。通常主分片的数量与索引存储数据的数据量成正比。
  7. 副本分片(replica shard):作为主分片的一个副本,可以承担一部分数据查询的请求(提供搜索的吞吐量),还具有容灾备份的能力,当主分片丢失了(例如:所在节点宕机),副本分片可以被选举为新的主分片来保持数据的完整性。相较于主分片的数量确定后就不可修改,副本分片的数量可以随时修改。
  8. 分片恢复(shard recovery):将一个分片的数据同步到另外一个分片上的过程,称为分片恢复,这个过程通常伴随着创建和分配。只有等到分片恢复后,副本分片才能对外提供搜索服务。
  9. 索引缓冲区(index buffer):写入索引的数据会先写入索引缓冲区中,当缓冲区满了的时候,缓冲区中的数据才会被写到磁盘上。
  10. 传输模块(transport module):当一个节点接收到请求后无法处理或者无法单独处理的时候,会将这个请求转发给其他节点,节点之间相互通讯是通过传输模块来完成的。
  11. 网关模块 (gateway module):网关模块存储着集群的信息以及每个索引分片的持久化数据。默认使用的是本地网关,它会把数据存储到本地文件系统中。
  12. 节点发现模块(node discovery module):用于节点之间相互识别,将新的节点加入到集群中。
  13. 线程池(thread pool):ES内提供了很多用于处理不同操作的线程池,例如:analyze线程池用于处理文本分析的请求,write线程池用于处理索引数据的写入请求,search线程池用于处理搜索请求。

五、配置JVM的堆内存大小

在ES节点上有三个重要的配置文件: elasticsearch.yml用于配置节点的参数、jvm.options用来配置Elasticsearch运行时占用的堆内存大小、log4j2.properties用来配置Elasticsearch运行时的日志参数。

我们通过jvm.options配置文件来设置ES运行时JVM堆内存的大小。如果JVM堆内存设置过小,可能查询时内存不够导致宕机;如果设置过大,又会超过JVM用于压缩对象指针的阈值而导致内存浪费。

设置JVM堆内存大小需要满足以下2个条件

  1. 堆内存最大不得超过开启压缩对象指针的阈值,一般最大可以是31GB(不同的系统可能有区别)。

  2. 在堆内存不超过上述阈值的前提下,其大小可以设置为其所在节点内存的一半。

    例如,你的服务器有16GB内存,就可以把堆内存大小设置为8GB,但是如果服务器内存为128GB,则通常堆内存最多只能设置为31GB。

    默认JVM堆内存的大小为1G。

六、参考文献

  • 《Elasticsearch数据搜索与分析实战》——王深湛

下一篇:《聊一聊Elasticsearch的原理与机制》

相关文章:

聊一聊Elasticsearch的一些基本信息

一、Elasticsearch是什么 Elasticsearch简称ES,是一款分布式搜索引擎。它是在Apache Lucene基础之上采用Java语言开发的。 Elasticsearch的官方网站对它的解释是:Elasticsearch是一个分布式、RESTful的搜索和数据分析引擎。 通过上边的官方解释&#…...

Unity 两篇文章熟悉所有编辑器拓展关键类 (上)

本专栏基础资源来自唐老狮和siki学院,仅作学习交流使用,不作任何商业用途,吃水不忘打井人,谨遵教诲 编辑器扩展内容实在是太多太多了(本篇就有五千字) 所以分为两个篇章而且只用一些常用api举例&#xff0c…...

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&#xff1a;17skywalking&#xff1a;10.1.0apache-skywalking-java-agent&#xff1a;9.3.0ElasticSearch : 8.8.2 问题描述 maximum query complexity exceeded 3336 > 3000 最大查询复杂度超过3336>3000 可能原因 查询条件过于复…...

开源一个开发的聊天应用与AI开发框架,集成 ChatGPT,支持私有部署的源码

大家好&#xff0c;我是一颗甜苞谷&#xff0c;今天分享一个开发的聊天应用与AI开发框架&#xff0c;集成 ChatGPT&#xff0c;支持私有部署的源码。 介绍 当前系统集成了ChatGPT的聊天应用&#xff0c;不仅提供了基本的即时通讯功能&#xff0c;还引入了先进的AI技术&#x…...

开发了一个成人学位英语助考微信小程序

微信小程序名称&#xff1a;石榴英语 全称&#xff1a;石榴英语真题助手 功能定位 北京成人学士学位英语辅助学习工具&#xff0c;包含记高频单词&#xff0c;高频词组&#xff0c;专项练习&#xff0c;模拟考试等功能。 开发背景 个人工作需要提高学习英文水平&#xff…...

LeetCode16:最接近的三数之和

原题地址&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数&#xff0c;使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1&#xf…...

VisualStudio2022配置2D图形库SFML

文章目录 1. 下载安装SFML库2. 创建C项目并配置SFML配置include目录和库目录链接SFML库配置动态链接库 3. 测试 1. 下载安装SFML库 SFML&#xff08;Simple and Fast Multimedia Library&#xff09;C库&#xff0c;适合2D游戏和图形界面&#xff0c;提供了以下模块&#xff1…...

「Mac畅玩鸿蒙与硬件4」鸿蒙开发环境配置篇4 - DevEco Studio 高效使用技巧

本篇将进一步介绍如何在 DevEco Studio 中高效使用各种功能&#xff0c;通过掌握快捷键、代码补全、调试工具等&#xff0c;帮助开发者在鸿蒙应用开发中大幅提升工作效率。 关键词 DevEco Studio快捷键代码补全调试工具项目导航 一、快捷键与高效操作 快捷键是提升开发效率的…...

构建生产级的 RAG 系统

对 RAG 应用程序进行原型设计很容易&#xff0c;但要使其高性能、健壮且可扩展到大型知识语料库却很困难。 本指南包含各种提示和技巧&#xff0c;以提高 RAG 工作流程的性能。我们首先概述一些通用技术 - 它们按照简单到复杂的顺序进行排列。然后&#xff0c;我们将更深入地研…...

完全透彻了解一个asp.net core MVC项目模板2

这是《完全透彻了解一个asp.net core MVC项目模板》的第二篇&#xff0c;如果你直接进入了本篇博文而不知道上下文&#xff0c;请先阅读《完全透彻了解一个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的重要性

在当前社交媒体的浪潮中&#xff0c;Facebook作为全球最大的社交网络之一&#xff0c;吸引了数以亿计的用户。为了在这一平台上实现有效的运营和推广&#xff0c;越来越多的博主和营销人员正在寻求最佳的养号策略。其中&#xff0c;IP地址的选择显得尤为重要&#xff0c;尤其是…...

EJB项目如何升级SpringCloud

记录某金融机构老项目重构升级为微服务过程1 如何从EJB架构拆分微服务 这个非常有趣的过程&#xff0c;整个过程耗时大致接近半年时光&#xff0c;需要考虑到重构升级保留原来的业务线&#xff0c;而且还要考虑后续的维护成本&#xff0c;保留现有的数据库表结构&#xff0c;…...

HTTPS 协议原理

一.HTTPS的定义 大家在刚开始学习的时候是不是也是非常好奇HTTP与HTTPS之间有什么区别和联系&#xff0c;两者都是应用层协议&#xff0c;而HTTPS是在HTTP的基础上引入了加密层&#xff0c;从而将HTTP的明文传输进行加密&#xff0c;保障数据的安全性 二.加密与解密 定义&#…...

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日&#xff0c;2024香港国际秋季灯饰展在香港会议展览中心盛大开展。 作为全球领先的物联网整体解决方案供应商&#xff0c;移远通信再次亮相&#xff0c;并重点展示了旗下支持Matter协议以及亚马逊ACK ( Alexa Connect Kit ) SDK for Matter方案的Wi-Fi模组、低功耗蓝…...

爬虫利器playwright

是什么 它是微软在 2020 年初开源的新一代自动化测试工具&#xff0c;其功能和 selenium 类似&#xff0c;都可以驱动浏览器进行各种自动化操作。还可以录制脚本 案列-01 运行之后我们用它自动打开的谷歌浏览器&#xff0c;打开百度&#xff0c;输入漂亮小姐姐并查找&#x…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙

Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...

AD学习(3)

1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分&#xff1a; &#xff08;1&#xff09;PCB焊盘&#xff1a;表层的铜 &#xff0c;top层的铜 &#xff08;2&#xff09;管脚序号&#xff1a;用来关联原理图中的管脚的序号&#xff0c;原理图的序号需要和PCB封装一一…...