有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Elastic搜索多个数据目录,选择放置索引的位置

我在多台服务器上运行ElasticSearch。所有服务器都是相同的,都有两个磁盘:一个SSD和一个HDD。不用说,SSD的速度更快,体积更小

我知道,通过将路径添加到elasticsearch.yml,可以在ES中设置多个数据目录。但是,在默认情况下,(根据我的发现),ES会根据可用磁盘空间的百分比自动选择使用哪个数据目录

有些索引对我来说比其他索引更重要,比如较新的索引(那些经常被查询的索引)需要放在SSD上,而那些查询较少的索引可以放在HDD上

如果可能的话,我需要做什么来完成这件事
是否将索引添加到路径


共 (1) 个答案

  1. # 1 楼答案

    这在Elasticsearch中是不可能的。是的,您可以指定多个数据路径,但这些路径不能“分配”到索引

    目前,ES将在文件级别将数据分条到所有数据路径,这意味着碎片将分布在所有路径上:

    Path to directory where to store index data allocated for this node.

    path.data: /path/to/data

    Can optionally include more than one location, causing data to be striped across the locations (a la RAID 0) on a file level, favouring locations with most free space on creation. For example:

    path.data: /path/to/data1,/path/to/data2

    另一方面,在2.0中this will change但是你仍然不能在一个数据路径上有一个索引,在另一个数据路径上有另一个索引

    目前,针对您的用例的唯一解决方案是在“热”节点上安装SSD,在“冷”节点上安装HDD,这意味着一个带有SSD的ES节点和一个带有HDD的ES节点:https://www.elastic.co/guide/en/elasticsearch/guide/current/retiring-data.html#migrate-indices