ElasticSearch之文档的存储

写在前面

本文看下文档的存储相关内容。

1:如何确定文档存储在哪个分片?

我们需要确保文档均匀分布在所有的分片中,避免某些部分机器空闲,部分机器繁忙的情况出现,想要实现均匀分布我们可以考虑如下的几种分片路由算法:

复制代码
1:round robin 轮询
    优点:简单
    缺点:数据更新、查询,删除的效率低,因为无法直接确定数据存储的分片,需要轮询,时间复杂度为O(n) 。
2:维护一个文档和分片的对应关系
    优点:简单
    缺点:需要额外维护对应关系,增加存储的成本
3:动态哈希,实时计算
    优点:简单,快速
    缺点:需要依赖于分片来计算,所以,分片数不能动态变更,除非reindex

以上三种方案,es采用的第三种,动态哈希,因为缺点相对来说,影响不是特别大,因为分片数我们完全可以事先确定好一个值,就算是确实需要修改分片数,也只需要在某次升级期间来完成即可,而前两种方案都会降低每次查询的速度,所以不可取。

动态哈希算法公式为hash(_routing)%number_of_primary_shards,这里的_routing默认是文档id,也可以通过如下方式来指定:

1:通过指定的方式,我们可以实现某些场景下某些数据放在同一个分片的需求。

2:es中修改分片数需要reindex的根本原因就在于,计算哈希依赖于分片数,如果分片数改变,路由分片的结果将会改变,如果不reindex将会导致大量文档无法查询。

具体如下:

2:更新和删除文档的流程

  • 更新文档的流程
  • 删除文档的流程

写在后面

参考文章列表

相关推荐
阿里云大数据AI技术5 小时前
更快、更稳、更省:揭秘阿里云 Elasticsearch 存算分离与弹性扩缩
elasticsearch
阿里云大数据AI技术7 小时前
Search Lake:ES x Paimon 让湖上多模态数据可搜可用
人工智能·elasticsearch·搜索引擎
Elasticsearch16 小时前
Elastic 如何利用磁盘支持的追踪存储将 OpenTelemetry 尾部采样内存占用降低 65%
elasticsearch
.柒宇.17 小时前
ELK日志分析系统实战指南:Elasticsearch搭建与入门(8.18.8版本)
运维·elk·elasticsearch·logback·日志系统
Linux-18741 天前
分布式链路追踪系统之二进制安装skywalking
elasticsearch·云原生·skywalking·分布式链路追踪系统·应用程序性能监控
阿里云大数据AI技术1 天前
阿里云 Elasticsearch 日志采集与加工服务:让日志链路少一串组件,多一份稳定
人工智能·elasticsearch
heimeiyingwang1 天前
【架构实战】可观测性三支柱:日志、指标、链路的融合
elasticsearch·架构·kubernetes
Elasticsearch1 天前
Elastic Observability 中的 Prometheus 指标:你的 PromQL 可以保持不变地运行
elasticsearch
Elasticsearch1 天前
为什么 Elasticsearch 平台是你的 AI 技术栈中缺失的一块拼图
elasticsearch
Elasticsearch1 天前
数据平台赌注:为什么金融 AI 计划停滞,以及成功者如何扩展规模
elasticsearch