首页 > 其他分享 >ElasticSearch基础知识

ElasticSearch基础知识

时间:2023-07-07 20:33:06浏览次数:38  
标签:写入 基础知识 索引 文档 分片 ElasticSearch 节点 ES

概述

底层基于Luence,用于全文检索和分析应用

术语概念

  • 索引(Index):ES数据存储在索引上,索引是具有类似特性的文档的集合。
  • 类型(Type):索引内部的逻辑分区(paritition),一个索引可定义多个类型。
  • 节点(Node):一个运行中的ElasticSearch实例,集群是由一个或多个拥有相同cluster.name配置的节点组成。ES集群中节点有三种不同的类型。
    • 主节点:负责管理集群范围内的所有变更,包括:创建或删除索引,跟踪那些节点是集群的一部分,决定哪些分片分配给相关的节点。主节点不涉及文档级别的变更和搜索等操作。可通过node.master属性设置。
    • 数据节点:存储数据和其对应的倒排索引,主要对文档进行增删改查、聚合等操作。可通过属性node.data属性设置。
    • 协调节点:如果node.master和node.data属性均为false,则此节点为协调节点,用来相应客户请求,均衡每个节点的负载。处理搜索,分发索引操作等。
  • 分片(Shared):一个索引中的数据保存在多个分片中,相当于水平分表。一个分片便是一个Lucence的实例,它本身就是一个完整的搜索引擎。分片被分配到集群的各个节点上。主/副分片。

写操作

  1. 节点首先计算新文档写入那个分片;
  2. 写入新文档时,先写入内存中,并将操作记录到translog文件中。此时执行搜索操作,新文档不能被索引到;
  3. ES每隔1秒(可修改)进行一次刷新(refresh)操作,将这1秒时间内写入内存的文档写入到文件系统缓存(filesystem Cache),并构成一个分段(Segment)。分段可被搜索到,但尚未写入磁盘,可能因宕机丢失;
  4. 重复2、3步骤,当每隔30分钟或translog文件变得很大,则执行fsync操作,segment将被写入磁盘、translog被删除(此后生成新的translog)。

PS:为防止数据丢失,ES每5s会将translog写入磁盘;为提高性能,ES会自动启用segment合并操作。

更新/删除操作

ES索引不能修改,因此更新、删除操作不是直接在原索引上执行的。

  • 删除:每个分区的segment维护del文件,表示记录删除的文档,在查询时将其过滤掉,并未真正删除。
  • 更新:首先查询原文档,得到文档版本号,然后将修改后的文档全新写入,同时旧文档标识为删除。

读操作

查询的过程大体上分为查询(query)和取回(fetch)两个节点,通过广播查询请求得到所有相关分片,并将它们的响应整合成全局排序的结果集合,然后将结果集合返回给客户端。

  1. 当一个节点接收到一个搜索请求,则这个节点变成了协调节点;
  2. 广播请求到索引中每个节点的分片,查询请求可以被某个主分片或者某个副本分片处理;
  3. 每个分片将在本地构建一个优先级队列。如果客户端要求返还结果排序中从第from开始数量为size的结果集,则每个节点都需要产生一个from+size大小的结果集,因此优先级队列的大小为from+size,分片仅会返回一个轻量级的结果给协调节点;
  4. 协调节点将所有分片的结果汇总,并进行全局排序,得到最终的查询排序结果;
  5. 以上步骤为查询阶段,得到一个排序结果,标记出哪些文档是符合要求的,仍然需要获取这些文档返回客户端。协调节点向含有该文档的分片发送get请求,分片获取文档返回给协调节点,协调节点返回给客户端。

标签:写入,基础知识,索引,文档,分片,ElasticSearch,节点,ES
From: https://www.cnblogs.com/neuhuang/p/17535996.html

相关文章

  • JVM 基础知识
    一、基础概念数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte、shor......
  • Elasticsearch 数据迁移
    Elasticsearch数据迁移使用elaticsearch-dump方式进行迁移#安装nodejscd/optwgethttps://npm.taobao.org/mirrors/node/v10.15.3/node-v10.15.3-linux-x64.tar.gztarxfnode-v10.15.3-linux-x64.tar.gzmvnode-v10.15.3-linux-x64nodeecho"exportNODE_HOME=/o......
  • 等保测评基础知识
     网络安全等级保护 定义:是指对国家秘密信息、法人或其他组织及公民专有信息以及公开信息和存储、传输、处理这些信息的信息系统分等级实行安全保护,对信息系统中使用的安全产品实行按等级管理,对信息系统中发生的信息安全事件分等级进行响应、处置。等级保护,即分等级保护,分等级监......
  • CSS基础知识(未完待续)
    前言:从本篇开始记录css的一些基础知识,但不会涉及css3,以后会单独学习记录。1.CSS简介html只关注了内容的语义,但并没有注意具体布局的美化以及样式,如果用html去设置的话,就会显得十分臃肿,这时候就需要css来进行设置了。CSS是层叠样式表的简称,有时候我们也会称之为css样式表或者......
  • 7.6 爬虫基础知识学习 requests的使用
    1.requests的快速使用 /1爬虫定义:可见即可爬/2安装resquests模块正确路径下输入pipinstallrequests/3用requests发送get请求importrequests#res是响应对象就是http响应python包装成了对象(响应头,响应体等)res=requests.get('https://www.cnblogs.com/abc6838......
  • Elasticsearch
    ElasticsearchELK技术栈简介1)ElasticSearch:ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfulweb接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够......
  • 基础知识
     类型特点典型应用单工只支持在一个方向上传输 半双工两台设备双向传输,但是不能同时进行IIC全双工二台设备间同时进行双向数据传输SPI/UART 类型特点典型应用同步有时钟线,通信的字节传输是没有间隔的,通信传输效率高(但复杂)。SPI/IIC......
  • ElasticSearch - 批量更新bulk死锁问题排查
    一、问题系统介绍监听商品变更MQ消息,查询商品最新的信息,调用BulkProcessor批量更新ES集群中的商品字段信息;由于商品数据非常多,所以将商品数据存储到ES集群上,整个ES集群共划分了256个分片,并根据商品的三级类目ID进行分片路由。比如一个SKU的商品名称发生变化,我们就会收到......
  • C++基础知识
    1.类1//创建类2classPerson{34//公共的属性5public:6voidsetAge(intage){7this->age=age;8}9~Person{}//析构函数10voidsetName(stringname){11this->name=name;12}1314intgetAge(){15......
  • elasticsearch best_fields most_fields cross_fields从内在实现看区别——本质就是前
    1.最佳字段(Bestfields)::假设我们有一个让用户搜索博客文章的网站(允许多字段搜索,最佳字段查询),就像这两份文档一样:PUT/my_index/my_type/1{"title":"Quickbrownrabbits","body":"Brownrabbitsarecommonlyseen."}PUT/my_index/my_type/2{"......