1、索引只读
all indices on this node will be marked read-only FORBIDDEN/12/index read-only / allow delete (api)
原因:
磁盘空间不够啦,我使用df -h查看磁盘空间,发现使用了97%,es默认达到95%就全都设置只读
解决
配置 config/elasticsearch.py
# 控制洪水阶段水印。它默认为95% cluster.routing.allocation.disk.watermark.flood_stage: 99% 或者 cluster.routing.allocation.disk.threshold_enabled: false
如果磁盘够了之后需要手动释放
PUT / twitter / _settings { "index.blocks.read_only_allow_delete":null }
参考
https://www.elastic.co/guide/en/elasticsearch/reference/current/disk-allocator.html
2、索引不能增加文档
Rejecting mapping update to [website] as the final mapping would have more than 1 type
原因:
6.X以及以后版本,不支持一个index多个type了, 一个索引只有一个文档type
参考
https://www.cnblogs.com/LUA123/p/10037336.html
下面几个问题折腾了了我一下午,记录下,后人勉之
3、不能以root用户运行
报错
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
添加单独的用户组,单独的用户,并给权限
groupadd elsearch useradd elsearch -g elsearch chown -R elsearch:elsearch elasticsearch-5.6.3 su elsearch # 修改用户密码 passwd elsearch
4、切换用户后找不到java
切回root账户 查看java在哪里
$ which java /root/myappBin/jdk1.8.0_121/bin/java
发现java被装在root目录下,what!!!普通用户是不能访问root目录的
然后改下权限就好了
chmod 777 /root
5、max_map_count太低
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
切换到root用户修改配置
$ vim etc/sysctl.conf
增加配置值:
vm.max_map_count=655360
执行命令
$ sysctl -p
重新启动ES服务
6、main ERROR Could not register mbeans
main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")
改变elasticsearch文件夹所有者到当前用户
sudo chown -R elsearch:elsearch elasticsearch-5.6.3
7、low disk watermark [??%] exceeded on
elasticsearch.yaml
cluster.routing.allocation.disk.threshold_enabled: true cluster.routing.allocation.disk.watermark.low: 93% cluster.routing.allocation.disk.watermark.high: 95%
8、max file descriptors elasticsearch process is too low
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
翻译:elasticsearch用户拥有的可创建文件描述的权限太低,至少需要65536;
解决办法:
#切换到root用户修改
$ vim /etc/security/limits.conf # 在最后面追加下面2行内容 *** hard nofile 65536 *** soft nofile 65536 *** 是启动ES的用户
参考:
- 关于普通用户不能在root目录下创建文件及目录的总结
- linux 安装 Elasticsearch5.6.x 详细步骤以及问题解决方案
- https://stackoverflow.com/questions/33369955/low-disk-watermark-exceeded-on
一些指令
cat /etc/passwd # 查看所有的用户 cat /etc/group # 查看所有的组 groups 用户名 # 当前用户所在组 增加用户:useradd username 为用户增加密码:passwd username 新建工作组:groupadd groupname 将用户添加进工作组:usermod -G groupname username 删除用户:userdel username 切换用户: su username 退出当前用户: exit