ElasticSearch知识点

news2025/1/12 20:48:21

什么是ElasticSearch

ElasticSearch: 智能搜索,分布式的搜索引擎,是ELK的一个非常完善的产品,ELK代表的是: E就是ElasticSearch,L就是Logstach,K就是kibana
Elasticsearch是一个建立在全文搜索引擎 Apache Lucene基础上的搜索引擎,每个字段都被索引并可被搜索,可以快速存储、搜索、分析海量的数据。

ElasticSearch的应用场景

1)全文搜索的功能
Elasticsearch提供了全文搜索的功能,适用于电商商品搜索、App搜索、企业内部信息搜索、IT系统搜索等
2)日志分析
复杂的业务场景通常会产生繁杂多样的日志,如Apache Log、System Log、MySQL Log等,往往很难从繁杂的日志中获取价值,却要承担其存储的成本。
Elasticsearch能够借助Beats、Logstash等快速对接各种常见的数据源,并通过集成的Kibana高效地完成日志的可视化分析,让日志产生价值。
3) 运维监控
当您在ECS或者物理机中部署了Docker容器.、MySQL或MongoDB等数据库,可使用Elasticsearch结合Beats、Logstash或ElasticFlow将所有日志实时集中并构建索引,然后通过集成的Kibana灵活地运用数据构建可视化运维看板,并在看板上展示丰机名称、IP地址、部署情况、显示颜色等信息
4)全分析
当您需要通过日志解决公司内部繁杂的安全审计工作,可通过Elasticsearch分析、检索海量历史日志,高效地完成安全审计工作。

ElasticSearch的优缺点

1)分布式的实时文件存储,每个字段都被索引且可用于搜索
2)分布式的实时分析搜索引警,海量数据下近实时秒级响应
3)简单的restful api,天生的兼容多语言开发
4)易扩展,处理PB级结构化或非结构化数据

ElasticSearch中的倒排索引是什么

倒排索引是搜索引擎的核心,搜索引擎的主要目标是在查找发生搜索条件的文档时提供快速搜索
倒排索引是一种像数据结构一样的散列图,可将用户从单词导向文档或网页,它是搜索引擎的核心,其主要目标是快速搜索从数百万文件中查找数据。
倒排索引是区别于正排索引的概念:
正排索引: 是以文档对象的唯一ID 作为索引,以文档内容作为记录
倒排索引: Inverted index,指的是将文档内容中的单词作为索引,将包含该词的多个文档ID 作为记录

Elasticsearch 索引文档的过程

面试官想考察你的是: 文档写入 ES创建索引的过程
文档写入包含: 单文档写入和批量bulk写入,这里只解释一下单文档写入流程大致分为如下三步:


第一步:客户从集群某节点写入数据,发送请求
第二步:节点1 接受到请求后,使用文档 id 来确定文档属于分片0。而分片0属于节点3,请求会被转到节点 3。分片0的主分片也分配到节点 3 上;
第三步,节点3 在主分片上执行写操作,成功后将情求并行转发到节点1和节点 2 的副本分片上,所有的副本分片都报告功节点3将向协调节点(节点 1) 报告成功,节点 1 请求客户端报告写入成功。

Elasticsearch 的基本概念?

(1)index 索引:索引类似于mysal中的数据库,Elasticesearch 中的索引是存在数据的地方,包含了一堆有相似结构的文档数据。
(2) type 类型:类型是用来定义数据结构,可以认为是 mysql 中的一张表,type 是index 中的一个逻数据分类
(3) document 文档:类似于 MySQL 中的一行,不同之处在于 ES 中的每个文档可以有不同的字段,但是对于通用字段应该具有相同的数据类型,文档是es中的最小数据单元,可以认为一个文档就是一条记录。
(4) Field 字段: Field是Elasticsearch的最小单位,一个document里面有多个field
(5)shard 分片:单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞叶量和性能。
(6) replica 副本:任一个服务器随时可能故障或宕机,此时shard 可能会丢失,因此可以为每个 shard 创建多个 replica副本。replica可以在shard故障时提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞叶量和性能。primaryshard (建立索引时一次设置,不能修改,默认5个),replica shard (随时修改数量,默认1个),默认每个索引10个 shard,5个primary shard,5个replica shard,最小的高可用配置,是2台服务器

ElasticSearch的搜索流程?

搜索被执行成一个两阶段过程:
第一个阶段: Query阶段
客户端发送请求到协调节点(coordinate node),协调节点将搜索请求广播到所有的 primary shard或replica,每个分片在本地执行搜索并构建一个匹配文档的大小为 from + size 的优先队列。接着每个分片返回各自优先队列中 所有 docId 和 打分值 给协调节点.由协调节点进行数据的合并、排序、分页等操作,产出最终结果。
第二个阶段: Fetch阶段
协调节点根据 Query阶段产生的结果,去各个节点上查询 docld 实际的 document 内容,最后由协调节点返回结果给客户端

ElasticSearch的集群、节点、索引、文档是什么?

1)集群是一个或多个节点(服务器)的集合,它们共同保存您的整个数据,并提供跨所有节点的联合索引和搜索功能.
2)节点
节点是属于集群一部分的单个服务器,它存储数据并参与群集索引和搜索功能.
3)索引就像关系数据库中的“数据库”,它有一个定义多种类型的映射索引是逻辑名称空间,映射到一个或多个主分片,并且可以有一个或多个副本分片
4)文档类似于关系数据库中的一行,不同之处在于索引中的每个文档可以具有不同的结构(字段),但是对于通用字段应该具有相同的数据类型

Elasticsearch 支持哪些类型的查询?

查询主要分为两种类型:精确匹配、全文检索匹配
精确匹配,例如 term、exists、 term set、 range、 prefix、 ids、 wildcard、 regexp. fuzzy等:全文检索,例match、 match phrase、 multi match、 match phrase prefix、 query string等

Elasticsearch 中执行搜索的各种可能方式有哪些?

方式一: 基于 DSL检索(最常用) Elasticsearch提供基于JSON的完整查询DSL来定义查询。

GET /shirts/_search
{
  "query":{
     "bool":{
        "filter":{
           {"term":{"color":"red"}},
           {"term":{"brand":"gucci"}}
        }
     }
  }
}

方式二: 基于 URL检索

GET /my_index/_search?q-user: seina

方式三: 类SQL检索

POST /_sql?format=txt 
{
   "query": "SELECT * FROM uint-2020-08-17 ORDER BY itemid DESC LIMIT 5"
}

ElasticSearch如何实现 master 选举的?

对所有可以成为 Master 的节点(node,master: true) 根据 nodeld 排序,每次选举每个节点都把自己所知道的节点排一次序,然后选出第一个(第0位)节点,暂时认为它是 Master 节点。
如果对某个节点的投票数达到一定的值(可以成为master节点数/2+1) 并且该节点自己也选举自己,那这个节点就是master.否则重新选举。(当然也可以自己设定一个值,最小值设定为超过能成为Master节点的n/2+1,否则会出现脑裂问题.discoveryzen,minimum master nodes)

Elasticsearch 更新和删除文档的过程?

删除和更新也都是写操作,但是Elasticsearch中的文档是不可变的,因此不能被删除或者改动以展示其变更:
磁盘上的每个段都有一个相应的.del文件,当删除请求发送后,文档并没有真的被删除,而是 在.del文件中被标记为删除。该文档依然能匹配查询,但是会在结果中被过演掉,当段合并时,在.del文件中被标记为删除的文档将不会被写入新段
在新的文档被创建时,Elasticsearch会为该文档指定一个版本号,当执行更新时,旧版本的文档在.del文件中被标记为删除,新版本的文档被索引到一个新段,旧版本的文档依然能匹配 查询,但是会在结果中被过演掉

Elasticsearch高并发下如何保证读写一致性?

1)对于更新操作
可以通过版本号使用乐观并发控制,以确保新版本不会被旧版本覆盖
每个文档都有一个 version 版本号,这个版本号在文档被改变时加一。Elasticsearch使用这个 versin 保证所有修改都被正确排序。当一个旧版本出现在新版本之后,它会被简单的忽略。
利用 version的这一优点确保数据不会因为修改冲突而丢失。比如指定文档的version来做更改,如果那个版本号不是现在的,我们的请求就失败了
2)对于写操作
一致性级别支持 quorum/one/all,默认为 quorum,即只有当大多数分片可用时才允许写操作。但即使大多数可用,也可能存在因为网络等原因导致写入副本失败,这样该副本被认为故障,分片将会在一个不同的节点上重建。
3)对于读操作
可以设置replication 为 sync(默认,这使得操作在主分片和副本分片都完成后才会返回; 如果设置replication 为 async 时,也可以通过设置搜索请求参数 preference 为 primary 来查询主分片,确保文档是最新版本

ElasticSearch索引多了怎么办,如何调优部署?

1)在设计的时候可以基于模板+时间滚动方式创建索引,每天递增数据,避免单个索引很大的情况出现:
2)在存储的时候冷热教据分开存储比如最近3天的数据作为热数据,其他的作为冷数据。冷数据的话由于不会再写入新数据了,可以考虑定期force merge (强制合并)和shrink (压缩)的方式进行处理,节约空间和检索效率
3)由于es支持动态扩展,所有可以多加几台机器来缓解集群压力

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

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

相关文章

腾讯云3年期轻量应用服务器优惠(薅羊毛教程)

腾讯云轻量应用服务器特价是有新用户限制的,所以阿腾云建议大家选择3年期轻量应用服务器,一劳永逸,免去续费困扰。腾讯云轻量应用服务器3年优惠可以选择2核2G4M和2核4G5M带宽,3年轻量2核2G4M服务器540元,2核4G5M轻量应…

封神教程:腾讯云3年轻量应用服务器老用户购买方法

腾讯云轻量应用服务器特价是有新用户限制的,所以阿腾云建议大家选择3年期轻量应用服务器,一劳永逸,免去续费困扰。腾讯云轻量应用服务器3年优惠可以选择2核2G4M和2核4G5M带宽,3年轻量2核2G4M服务器540元,2核4G5M轻量应…

vscode因为大文件而无限崩溃的问题,窗口意外终止(原因:“oom“,代码:“-536870904“

复制了一大堆的代码(好几兆)到一个文件里,然后就导致 vscode 卡死, 之后就算把该文件删掉了,打开vscode还是会默认打开该文件而卡死 解决办法: win R 输入 %appdata%/code/ 删除该文件夹下的 backups/ 文件…

【m98】webrtc vs2017构建带符号的debug库

调试有符号 调试 无符号 试试exe不输出到独立的文件? -】 直接输出到sln下面

在 Microsoft Word 中启用护眼模式

在 Microsoft Word 中启用护眼模式 在使用 Microsoft Word 365 或 Word 2019(Windows)版本时,启用护眼模式(也称为“夜间模式”)可以有效减轻屏幕亮度,有助于减少眼睛疲劳。以下是启用护眼模式的步骤&…

ChatGPT+Roblox,元宇宙的AI叙事逻辑#Leveling Up

MixCopilot 嗨,亲爱的听众朋友们!欢迎收听我们的播客节目!我是你们的主播:MixCopilot 混合副驾。今天我们要为大家带来的是我们的AI革命系列节目之一。这个系列节目聚焦于AI领域的一些最有影响力的建设者,他们将会讨论…

Leetcode -463.岛屿的周长 - 476.数字的补码

Leetcode Leetcode -463.岛屿的周长Leetcode - 476.数字的补码 Leetcode -463.岛屿的周长 题目:给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] 1 表示陆地, grid[i][j] 0 表示水域。 网格中的格子 水平和垂直 方向…

数字化仪的超声波应用

超声波是频率大于人类听觉范围上限的声学声压(声学)波。超声波设备的工作频率为 20 kHz 至几千 MHz。表 1 总结了一些更常见的超声波应用的特征。每个应用中使用的频率范围都反映了实际情况下的平衡。提高工作频率可以通过提高分辨率来检测较小的伪影&am…

【刷题】力扣每日一题 : 381、2300、765

前言 本篇文章用于记录在做力扣每日一题的时候遇到的一些知识点以及自己的思路 381 题干 题目链接 我的思路及做题过程 思路1 我的想法是 记录每个字符串的字母出现个数 然后比较两个字符串是否有字母同时出现 class Solution { public:int judge(string s1, string s2…

RAG相关内容介绍

本文记录在查找RAG相关内容时所整合的一些资料与内容,还有一个组会报告的PPT 文章目录 定义LLM的知识更新难题 RAG是什么?-“开卷考试”RAG原理与技术RAG技术细节一、数据索引• 数据提取• 分块(Chunking)分块方式确定应用程序的…

本地编译安装 Minkowski Engine 报错 Cuda 版本 与 Pytorch 版本不匹配

编译 Cuda 版本 C 插件 Cuda 版本 与 Pytorch 版本不匹配解决方案 报错详情环境报错分析 报错详情 RuntimeError: The detected CUDA version (12.2) mismatches the version that was used to compile PyTorch (11.8). Please make sure to use the same CUDA versions.环境 …

WebSocket是什么以及其与HTTP的区别

新钛云服已累计为您分享774篇技术干货 HTTP协议 HTTP是单向的,客户端发送请求,服务器发送响应。举个例子,当用户向服务器发送请求时,该请求采用HTTP或HTTPS的形式,在接收到请求后,服务器将响应发送给客户端…

IOC - Google Guice

Google Guice是一个轻量级的依赖注入框架,专注于依赖注入和IoC,适用于中小型应用。 Spring Framework是一个全面的企业级框架,提供了广泛的功能,适用于大型企业应用。 是吧!IOC 容器不止Spring,还有Google Guice,来体…

钉钉统计部门个人请假次数go

前言 最近小组需要统计部门各种请假次数,写了一个方法,第一次实战中用到递归函数,简单记录一下。 效果展示 这些数据不需要返回json,这里这样是为了方便测试。可以通过这些数据完成其它的操作。 功能实现 钉钉服务端调试工具A…

linux入门---线程池的模拟实现

目录标题 什么是线程池线程的封装准备工作构造函数和析构函数start函数join函数threadname函数完整代码 线程池的实现准备工作构造函数和析构函数push函数pop函数run函数完整的代码 测试代码 什么是线程池 在实现线程池之前我们先了解一下什么是线程池,所谓的池大家…

C语言——求 n 以内(不包括 n)同时能被 3 和 7 整除的所有自然数之和的平方根 s,n 从键盘输入。

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> #include<math.h> int main() {int i,n;double s0.0;printf("输入任意一个自然数&#xff1a; ");scanf("%d",&n);for(i1;i<n;i) {if(i%30&&i%70){si;}}ssqrt(s);printf(…

低价寄快递寄件微信小程序 实际商用版,对接了低价快递渠道,运营平台赚取差价,支持市面上全部主流快递

盈利模式 快递代下CPS就是用户通过线上的渠道&#xff08;快递小程序&#xff09;&#xff0c;线上下单寄快递来赚取差价&#xff0c;例如你的成本价是5元&#xff0c;你在后台比例设置里面设置 首重利润是1元&#xff0c;续重0.5元&#xff0c;用户下1kg的单页面显示的就是6元…

JAVA集合学习

一、结构 List和Set继承了Collection接口&#xff0c;Collection继承了Iterable Object类是所有类的根类&#xff0c;包括集合类&#xff0c;集合类中的元素通常是对象&#xff0c;继承了Object类中的一些基本方法&#xff0c;例如toString()、equals()、hashCode()。 Collect…

Linux —— 网络编程套接字

目录 一&#xff0c;网络字节序 二&#xff0c;socket编程接口 sockaddr结构 源IP地址、目的IP地址&#xff0c;在IP数据包头部&#xff0c;有此两个IP地址&#xff1b; 端口号&#xff0c;是传输层协议的内容&#xff1b; 端口号是一个2字节16位的整数&#xff1b;端口号用…

第 117 场 LeetCode 双周赛题解

A 给小朋友们分糖果 I 动态规划&#xff1a;设 p [ k ] [ i ] p[k][i] p[k][i] 为将 i i i 个糖果分给 k k k 个小朋友的方案数&#xff0c;先求 p [ 2 ] [ i ] p[2][i] p[2][i] &#xff0c;再求 p [ 3 ] [ n ] p[3][n] p[3][n] class Solution { public:using ll long …