我有Elasticsearch的默认安装。它似乎是在
中存储它的数据/var/lib/elasticsearch/elasticsearch/nodes
所以有两个问题:
如果我想将数据移动到同一台计算机上的其他位置(例如,请说/foo/bar
)
1)我复制/var/lib/elasticsearch
树中的哪个级别?和
2)elastisearch.yml中的path.data的相关设置是什么?
答案 0 :(得分:36)
一个。您需要移动elasticsearch
文件夹,即与cluster.name
文件中配置的elasticsearch.yml
具有相同名称的文件夹。
B中。您需要将path.data
文件中的elasticsearch.yml
设置修改为您已将数据移动到的新文件夹。
因此,假设您当前正在使用/var/lib/elasticsearch
,并且想要将数据文件夹移至/foo/bar
,则需要执行以下操作:
> mv /var/lib/elasticsearch /foo/bar
然后在elasticsearch.yml
修改path.data
:
path.data: /foo/bar
您最终会将数据存储在/foo/bar/elasticsearch
而不是/var/lib/elasticsearch
中。确保elasticsearch流程可以访问您的新文件夹。
答案 1 :(得分:5)
我想添加一个恼人的问题,当我在做@ Val的有用指导时遇到这个问题。 我做完之后:
> mv /var/lib/elasticsearch /foo/bar
我设置了
path.data:/ foo / bar
但是Elasticsearch运行不正常。例如,xpack security(formarly shield)身份验证密码已恢复为其默认的“changeme”。而且当我想列出索引时,没有任何显示。 然后我设置了
path.data:/ foo / bar / elasticsearch /
我认为,“弹性搜索”结束时的最后一个斜线很重要。可能是我很困惑,但它解决了我的问题。
答案 2 :(得分:2)
加上Val的好答案......
也许从ES 5.6开始(?没有研究这是多么的真实)我将我的数据目录移动到一个新的位置,并且无法启动ES。 index_name.log文件显示ES正在寻找默认数据目录(/ var / lib / elasticsearch),因为我移动它所以找不到它,所以启动死了。我将现在移动的目录的副本复制回/ var / lib / elasticsearch并再次尝试启动,但再次失败。 Log显示ES确实找到了默认数据目录位置,但也发现有内容因此启动失败。最后一步是清空/ var / lib / elasticsearch并启动成功。
总结RHEL上的ES 5.6(至少): 1.必须存在默认的/ var / lib / elasticsearch目录 2.默认的/ var / lib / elasticsearch目录必须为空
答案 3 :(得分:0)
如果您对移动关键数据更为谨慎,则保留所有属性(所有者,组,时间戳等)的cp会有所帮助。
cp -r --preserve=all /var/lib/elasticsearch/ /foo/bar/
打开elasticsearch.yml并将path.data设置到新位置
path.data: /foo/bar/elasticsearch/
重新启动elasticsearch服务器。现在您可以安全地删除源数据了。
rm -rf /var/lib/elasticsearch/