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

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:更新和删除文档的流程

  • 更新文档的流程
    在这里插入图片描述
  • 删除文档的流程
    在这里插入图片描述

写在后面

参考文章列表

http://www.lryc.cn/news/310662.html

相关文章:

  • 在Redhat 7 Linux上安装llama.cpp [ 错误stdatomic.h: No such file or directory]
  • linux 常用 命令行HTTP客户端
  • 深入理解@Param注解:用于参数映射的利器
  • OCP Secure boot必要特性
  • 全新攻击面管理平台
  • 在VMware中安装CentOS 7并配置Docker
  • Leetcoder Day37| 动态规划part04 背包问题
  • 突破编程_C++_面试(STL 编程 vector )
  • 【报名指南】2024年第九届数维杯数学建模挑战赛报名全流程图解
  • C#,哈夫曼编码(Huffman Code)压缩(Compress )与解压缩(Decompress)算法与源代码
  • JS 对象数组排序方法测试
  • 【计算机考研】408学到什么程度才能考130?
  • “智农”-农业物联网可视化
  • day03-网络编程
  • Java反射,动态代理。笔记
  • 作为团队开发组长你需要做的:
  • Windows安装Neo4j数据库教程(3.X版本)
  • 无人机飞行控制系统技术,四旋翼无人机控制系统建模技术详解
  • 程序员的金三银四求职宝典:如何在关键时期脱颖而出?
  • 分享经典、现代和前沿软件工程课程
  • 网络工程师笔记3
  • 【菜鸟入门!】Matlab零基础快速入门教程
  • 数据中心GPU集群高性能组网技术分析
  • go垃圾回收
  • 如何做代币分析:以 LEO 币为例
  • 数制和码制
  • Git Bash中安装tree
  • java开源 VR全景商城 saas商城 b2b2c商城 o2o商城 积分商城 秒杀商城 拼团商城 分销商城 短视频商城 小程序商城搭建
  • C++练手题系列一
  • (下)async/await高级用法,你会多少种呢?