现在我配置的是一台机器有两块磁盘,但是es只会往最大的那一块盘中写数据,我想知道,这两块磁盘的容量相差多少之后es才会只往打的那一块磁盘写数据。或者相关的源码在哪个地方,希望能指点一下

1,两块磁盘挂载的目录都要配到data.path;

2,磁盘选择是shard级别,一旦shard分配,新数据就只会写到这个盘;如果有新的index,shard会分配到另外盘。

配置都没问题,现在的情况是,如果两块磁盘的大小相差不多的话数据分布是比较均衡的,两块磁盘的shard都会写入数据。但是如果两块磁盘的容量相差比较大的话,只会把数据往容量大的磁盘的shard中写入,所以想知道这两块磁盘容量相差多少才会触发这种情况

可以指定多个数据路径,以便跨多个磁盘或位置传播数据,但是来自单个分片的所有文件都将写入同一路径。官网解读:

看源码找到了,如果一个机器分两块磁盘的话,然后shard分成2份的话,创建shard的时候会先选择磁盘容量大的那个创建id为1的shard,然后把大的那个磁盘的容量减去两块磁盘的总容量*5%作为这块磁盘的剩余容量,然后再和另一块磁盘大小作比较,再选择大的那块磁盘创建id为0的shard