Es存储和查询

news2024/12/23 6:42:24

基本概念

Cluster

集群,一个ES集群是由多个节点(Node)组成的,每个集群都有一个cluster name 作为标识, 在同一网段下的Es实例会通过cluster name 决定加入哪个集群下。

node

节点,一个ES实例就是一个node,一个机器可以有多个实例,所以并不是说一台机器就是一个node,大多数情况下,每个node运行在一个独立的环境或者虚拟机上。

index

索引,即一系列documents的集合

shard

1.分片,ES是分布式搜索引擎,每个索引有一个或多个分片,索引的数据被分配到各个分片上,相当于一桶水 用了N个杯子装
2.分片有助于横向扩展,N个分片会被尽可能平均地(rebalance)分配在不同的节点上(例如你有2个节点,4个主分片(不考虑备份),那么每个节点会分到2个分片,后来你增加了2个节点,那么你这4个节点上都会有1个分片,这个过程叫relocation,ES感知后自动完成)
3.分片是独立的,对于一个Search Request的行为,每个分片都会执行这个Request
4.每个分片都是一个Lucene Index,所以一个分片只能存放 Integer.MAX_VALUE - 128 = 2,147,483,519个docs。

replica

1.副本,可以理解为备份分片,相应地有primary shard(主分片)
2.主分片和备分片不会出现在同一个节点上(防止单点故障),默认情况下一个索引创建5个分片一个备份(即5primary+5replica=10个分片)
3.如果你只有一个节点,那么5个replica都无法分配(unassigned),此时cluster status会变成Yellow。
4.为了提升访问压力过大是单机无法处理所有请求的问题,Elasticsearch集群引入了副本策略replica。副本策略对index中的每个分片创建冗余的副本,处理查询时可以把这些副本当做主分片来对待(primary shard),此外副本策略提供了高可用和数据安全的保障,当分片所在的机器宕机,Elasticsearch可以使用其副本进行恢复,从而避免数据丢失。

分片策略

shard = hash(routing) % number_of_primary_shards

routing 是一个可变值,默认是文档的 _id ,也可以设置成一个自定义的值。 routing 通过 hash函数生成一个数字,然后这个数字再除以 number_of_primary_shards (主分片的数量)后得到 余数 。这个分布在 0 到number_of_primary_shards-1 之间的余数,就是我们所寻求的文档所在分片的位置。

水平扩容

在这里插入图片描述

primary shard在索引创建后就无法进行修改,所以需要将6台服务器扩容到9台服务器只能对replica shard进行增加,可以修改索引配置,将replica shard的数量修改为2,此时replica shard的数量变为6个,加上3个primary shard 就是9个 shard

分页查询

1.from + size 分页方式

第一步:Client 发送查询请求到 Server 端,Node1 接收到请求然后创建一个大小为 from + size 的优先级队列用来存放结果,此时 Node1 被称为 coordinating node(协调节点);

第二步:Node1 将请求广播到涉及的 shard 上,每个 shard 内部执行搜索请求,然后将执行结果存到自己内部的大小同样为 from+size 的优先级队列里;

第三步:每个 shard 将暂存的自身优先级队列里的结果返给 Node1,Node1 拿到所有 shard返回的结果后,对结果进行一次合并,产生一个全局的优先级队列,存在 Node1 的优先级队列中。(如上图中,Node1 会拿到 (from +size) * 6 条数据,这些数据只包含 doc 的唯一标识_id 和用于排序的_score,然后 Node1 会对这些数据合并排序,选择前 from + size 条数据存到优先级队列);

Scroll 分页方式

scroll 分页方式类似关系型数据库中的cursor(游标),首次查询时会生成并缓存快照,返回给客户端快照读取的位置参数(scroll_id),后续每次请求都会通过 scroll_id 访问快照实现快速查询需要的数据,有效降低查询和存储的性能损耗。

scroll 分页方式的优点就是减少了查询和排序的次数,避免性能损耗。缺点就是只能实现上一页、下一页的翻页功能,不兼容通过页码查询数据的跳页,同时由于其在搜索初始化阶段会生成快照,后续数据的变化无法及时体现在查询结果,因此更加适合一次性批量查询或非实时数据的分页查询。

Search After 分页方式

使用search_after 进行分页 相比 from & size 的方式要更加高效,而且在不断有新数据入库的时候仅仅使用 from 和 size 分页会有重复的情况,相比使用 scroll 分页,search_after 可以进行实时的查询,不过 search_after不适合跳跃式的分页。

使用 search_after 类比 SQL,相当于 SELECT * FROM shopping WHERE num > before_max_num ORDER BY num ASC LIMIT 10

对比

在这里插入图片描述

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

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

相关文章

电气控制与PLC之间的本质区别是什么?

电气控制和PLC(可编程逻辑控制器)之间的最实质的区别是它们的实现方式和应用范围。 我这里刚好有嵌入式、单片机、plc的资料需要可以私我或在评论区扣个6 实现方式: 电气控制:电气控制是通过使用电气元件(如继电器、…

数据库多表连接查询练习

数据库多表连接查询练习 一、创建数据库dept、emp 二、插入数据 1.找出销售部门中年纪最大的员工的姓名 mysql> select name,age from emp inner join dept on dept.dept1emp.dept2 where dept_name销售 order by age desc limit 1;2.求财务部门最低工资的员工姓名…

探索AI大模型:现状、挑战与未来

导言: 近年来,AI大模型如GPT(生成对抗网络)在自然语言处理领域崭露头角,引发广泛关注和讨论。这些模型能够生成各种类型的文本内容,展现出惊人的语言处理能力。然而,AI大模型的发展也面临着挑战…

Perl web - Mojolicious 小记

文章目录 关于 Mojolicious安装 关于 Mojolicious Mojolicious是Perl语言比较流行的异步Web开发框架。 官网:https://mojolicious.orggithub : https://github.com/mojolicious/mojo示例:https://github.com/mojolicious/mojo/tree/main/examples 相关…

【雕爷学编程】Arduino动手做(138)---64位WS2812点阵屏模块8

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

移动端 滚动穿透

文章目录 滚动穿透弹窗内容滚动到底部后带动底层页面滚动在弹窗出现时可以直接通过页面滚动条滚动 禁用底层页面滚动弹出层将覆盖整个视口禁用触摸事件监听弹出层滚动位置阻止弹出层的滚动事件冒泡 滚动穿透 当一个固定定位(fixed)或绝对定位&#xff0…

Windows10 网页版 上线!最具扩展性的webos

模仿Windows10 UI 框架 Vue3 点击进入github 链接: https://github.com/royalknight56/win10-vue3 本框架可以让你的页面像win10视窗系统一样,运行一个网页上的win10系统。 本框架可能是最具扩展性的webos 本框架相较于其他的特点是, 具有文件系统&am…

第二章:类与对象(上)

系列文章目录 文章目录 系列文章目录前言面向过程和面向对象初步认识类的引入类的定义类的两种定义方式成员变量命名规则的建议 类的访问限定符及封装访问限定符面试题 封装面试题 类的作用域类的实例化类对象模型如何计算类对象的大小类对象的存储方式猜测对象中包含类的各个成…

C语言字节序

C语言字节序分为大端序和小端序。 大端序: 高字节先存储,也就是数据的高字节存储在低地址中。 小端序: 低字节先存储,也就是数据的低字节存储在低地址中。 例如: short a 01234; char *p &a; printf(&qu…

基于Java+SpringBoot制作一个社区宠物登记小程序

制作一个社区宠物登记小程序,帮助社区居民登记和管理他们的宠物信息,以便更好地跟踪和维护社区中的宠物状况,通过社区宠物信息登记系统,社区居民可以更好地管理自己的宠物信息,并与其他宠物所有者共享资源和信息。这将有助于提高社区宠物的福利和安全,促进社区成员之间的…

业务流程管理系统是什么?企业业务流程有哪些?

随着企业规模的不断扩大和竞争的日益激烈,业务流程管理系统的重要性也越来越明显。通过对业务流程的全面管理和优化,企业可以提高工作效率、降低流程成本、优化流程质量,从而在市场竞争中获得更大的优势。 阅读本文您将了解: 一、…

【实战项目】c++实现基于reactor的高并发服务器

基于Reactor的高并发服务器,分为反应堆模型,多线程,I/O模型,服务器,Http请求和响应五部分 全局 反应堆模型 Channel 描述了文件描述符以及读写事件,以及对应的读写销毁回调函数,对应存储arg读…

查看某个三方依赖jar包是在哪个pom引入的(springboot+idea)

项目springboot1升级2版本,日志框架使用的是log4j,升级到springboot2版本某些依赖引入了logback依赖包,然后项目启动报错: 查看这个SLF4JLoggerContextFactory这个类是在哪个jar包下 使用idea的maven依赖图查看功能寻找是哪个p…

代码随想录打卡

这里写目录标题 1.数组部分1.1二分查找1.2移除元素1.3 有序数组的平方1.4长度最小的子数组1.5螺旋矩阵II 2. 链表部分2.1移除链表元素2.2设计链表2.3反转链表2.4两两交换相邻的节点2.5删除链表的倒数第n个节点 1.数组部分 1.1二分查找 class Solution {public int search(int[…

能耗感知虚拟光网络映射论文分析

1、M. Zhu, P. Gao, J. Zhang, X. Zeng, and S. Zhang, “Energy efficient dynamic virtual optical network embedding in sliceable-transponder-equipped eons,” in GLOBECOM 2017 - 2017 IEEE Global Communications Conference, 2017, pp. 1–6. 特点是:1&a…

干货 | 儿童智能手表数据安全要求标准设计

以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。 一、选题与背景 儿童智能手表暴露的数据安全事件比较显著,我们主要针对这一个特殊的细分领域做研究。 二、研究报告 三、标准草案介绍 我们通过分析儿童智能手表的业务组成&#xff…

是不是考了cspm就能从事项目管理了?含金量高吗?

随着项目管理的发展,越来越多的人开始意识到项目管理的重要性。而CSPM(项目管理专业人员能力评价)则成为了很多人进入项目管理领域的门槛。但是,很多人对于CSPM的认识存在误区,认为只要考取了CSPM证书,就能…

信息的编码表示

文章目录 1 前言2 西文字符的编码表示——ASCII 码3 中文字符的编码表示3.1 区位码3.2 国标码3.3 机内码3.4 国标码与机内码 5 机外码 1 前言 在计算机的内部,所有数据都是通过二进制编码而保存的,计算机只能识别二进制。因此我们存储任何信息到计算机中…

QT_Creator格式化工具使用

QT_Creator代码格式化工具使用 为了确保代码格式整齐统一,使用代码格式化工具会将写的代码自动格式化以保证格式统一 Astyle: A Free, Fast, and Small Automatic Formatter for C, C, C/CLI, Objective-C, C#, and Java Source Code 一、C和C代码格式化…

C语言实现毕达哥拉斯树 你需要知道的一切!

分形几何学是一门研究不规则几何形态的几何学学科。它涉及数学上基于递归的反馈系统,通过不断迭代的方程式生成分形。尽管分形是数学构造,但它们也存在于自然界中,并因此在艺术作品中得到应用。 计算机的出现为推动分形几何学的发展起到了重…