ElasticSearch常见的报错及解决

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的用户

参考:

  1. 关于普通用户不能在root目录下创建文件及目录的总结
  2. linux 安装 Elasticsearch5.6.x 详细步骤以及问题解决方案
  3. https://*.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


上一篇:从1到0——重识前端之css基础与选择器


下一篇:Hbase master启动报错:Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster Caused by: java.net.UnknownHostException: