线上出现es 报错:
too_many_clauses maxClauseCount is set to 1024
网上百度的答案很简单,改配置。
由于ES是docker安装的,而且配置文件没有映射到宿主机,所以想到进入容器内改配置,然后重启容器。
但是解决过程中还是遇到了很多坑,便记录下来。
第一个坑:配置写错,导致重启失败:
网上很多文章都是以下这种配置:
index.query.bool.max_clause_count: 10240
正确的应该是:
indices.query.bool.max_clause_count: 10240
可能是由于版本的原因导致的配置差异。所以,我修改了配置之后,重启容器就悲剧了,一直无限循环重启中。
第二个坑:容器查看日志
出了问题只能查看容器日志来定位问题,但是docker日志命令不太熟悉,使用的是:
docker logs -f CONTAINER_ID
这个命令是查看所有的实时日志。由于我们的容器存在时间比较长,日志较多,导致我认为日志开始部分报错引起的重启,查了半天,没有结果,觉得方向不对。
后面百度才发现,查看容器最后100条日志应该使用以下命令
docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID
第三个坑:容器起不来,如何修改容器内部配置
解决方案:
我的容器名称:es,容器默认配置路径:/usr/share/elasticsearch/config
#cp出来,到宿主机当前目录下
docker cp es:/usr/share/elasticsearch/config/elasticsearch.yml .
#修改配置
vi elasticsearch.yml
#cp回去
docker cp elasticsearch.yml es:/usr/share/elasticsearch/config/elasticsearch.yml
#重启
docker start es
第四个坑:修改了防火墙策略或者重启网络导致容器外访问不了应用端口
解决办法:查看日志,有时候会有提示。重启docker,再启动容器。
参考资料:
reason":"too_many_clauses: maxClauseCount is set to 1024 问题解决 - kuroniko - 博客园
怎么修改无法启动的docker容器的配置? - along7973 - 博客园
【docker】归纳最全的 查看docker容器日志的 docker logs命令_seowen的开发 小本子-CSDN博客_docker logs命令