是时候用 ES 拯救发际线啦

最近在测试elasticsearch的索引数据多盘存储的问题,求大神帮忙解答一些,谢谢!

Elasticsearch | 作者 rojay | 发布于2018年03月21日 | 阅读数:1259

目前ES的索引存储路径就一个path.data: /index/data
现在准备挂载到多个盘上面,看索引性能会不会提升明显。
path.data参数后面写了3个路径,每个路径代表一个磁盘。
path.data: /index/data,/data2/index/data,/data3/index/data
 
测试了单shard和多shard,
单个shard的情况肯定是会往一个磁盘上面写的,这个是没有疑问的;
然后在测试多个shard的时候,发现有时候只往其中两个盘上面写数据,另外一个磁盘不写索引。这里就有点疑惑了,想请教下,官方文档是否有这方面的介绍,关于索引多磁盘写的。请告知,谢谢了
已邀请:

rojay - 杭州的一枚90后初入职场的IT男

赞同来自:

来,自己回答一波!
 
ES多盘shard分配原理
假设现在单机环境中有两块磁盘,es的配置文件elasticsearch.yml中的path.data:/index/data,/data2/index/data
配置了两块盘,对应了两个路径。那么我现在要创建hrecord1索引的2个主shard分配原理如下:
首先会创建shard1(我估计ES会优先创建shard编号大的shard,但是影响不大),创建shard1的时候会找出两个路径对应的磁盘空间大的那个盘,然后将shard1放到那个路径下。
创建shard0的时候,会将/index和/data2磁盘的剩余可用空间相加,然后将这个总和乘以百分之五
将前面创建shard1的磁盘空间减去这个百分之五的值,然后再将这个差值与/data2磁盘剩余空间进行比较,找出磁盘空间大的,然后把shard0放到那个大的磁盘空间上。
说白了,这个百分之五的空间是ES为那个创建的shard1设置的预留空间吧。
有错误的地方也欢迎大家指出,一起交流哈!
 主要代码在ShardPath.java里面

joycer

赞同来自:

那么对于索引性能有提高吗?

要回复问题请先登录注册