我有一个默认的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.name在elasticsearch.yml文件中配置的名称相同.
B.您需要path.data将elasticsearch.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 目录必须为空
如果您对移动关键数据更加谨慎,保留所有属性(所有者、组、时间戳等)的 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)
我想添加一个恼人的问题,当我在做@ 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 /
我认为,"弹性搜索"结束时的最后一个斜线很重要.可能是我很困惑,但它解决了我的问题.
| 归档时间: |
|
| 查看次数: |
37461 次 |
| 最近记录: |