如何移动elasticsearch数据目录?

Chr*_*vey 32 elasticsearch

我有一个默认的Elasticsearch安装.它似乎是在存储它的数据

/var/lib/elasticsearch/elasticsearch/nodes
Run Code Online (Sandbox Code Playgroud)

所以有两个问题:

如果我想将我的数据移动到同一台机器上的另一个位置(比方说/foo/bar)

1)/var/lib/elasticsearch我复制树中的哪个级别?和

2)elastisearch.yml中path.data的相关设置是什么?

Val*_*Val 45

答:您需要移动elasticsearch文件夹,即该文件夹与您cluster.nameelasticsearch.yml文件中配置的名称相同.

B.您需要path.dataelasticsearch.yml文件中的设置修改为您已将数据移动到的新文件夹.

因此,假设您正在使用/var/lib/elasticsearch并且想要将数据文件夹移动到/foo/bar,您需要执行以下操作:

> mv /var/lib/elasticsearch /foo/bar
Run Code Online (Sandbox Code Playgroud)

然后在elasticsearch.yml修改path.data为:

path.data: /foo/bar
Run Code Online (Sandbox Code Playgroud)

您最终将存储的数据/foo/bar/elasticsearch替换为/var/lib/elasticsearch.确保elasticsearch进程可以访问您的新文件夹.


小智 6

添加到 Val 的好答案......

也许从 ES 5.6 开始(?没有研究这是真的)我将我的数据目录移动到一个新位置并且无法让 ES 启动。index_name.log文件显示ES正在寻找默认的数据目录(/var/lib/elasticsearch),因为我移动了它找不到,所以启动死了。我将现在移动的目录复制回 /var/lib/elasticsearch 并再次尝试启动,但再次失败。日志显示ES确实找到了默认的数据目录位置,但也发现有内容所以启动失败。最后一步是清空 /var/lib/elasticsearch 并且启动成功。

RHEL 上 ES 5.6 的总结(至少): 1. 默认的 /var/lib/elasticsearch 目录必须存在 2. 默认的 /var/lib/elasticsearch 目录必须为空


Maj*_*rin 6

如果您对移动关键数据更加谨慎,保留所有属性(所有者、组、时间戳等)的 cp 会有所帮助。

cp -r --preserve=all /var/lib/elasticsearch/ /foo/bar/
Run Code Online (Sandbox Code Playgroud)

打开 elasticsearch.yml 并将 path.data 设置为新位置

path.data: /foo/bar/elasticsearch/
Run Code Online (Sandbox Code Playgroud)

重新启动弹性搜索服务器。现在您可以安全地删除源数据。

rm -rf /var/lib/elasticsearch/
Run Code Online (Sandbox Code Playgroud)

  • 保留所有是有帮助的,权限问题永无止境。- 谢谢 (3认同)

Cey*_*hun 5

我想添加一个恼人的问题,当我在做@ Val的有用指导时遇到这个问题.我做了之后:

> mv /var/lib/elasticsearch /foo/bar
Run Code Online (Sandbox Code Playgroud)

我订了

path.data:/ foo/bar

但是Elasticsearch运行不正常.例如,xpack security(formarly shield)身份验证密码已恢复为其默认的"changeme".而且当我想列出索引时,没有任何显示.然后我设置了

path.data:/ foo/bar/elasticsearch /

我认为,"弹性搜索"结束时的最后一个斜线很重要.可能是我很困惑,但它解决了我的问题.