报错的表现:
网页端文章点击发布后发现在app端Elstaicsearch没有为刚发布的文章编制索引,这导致app端无法搜索到刚发布的文章。
调试时发现Elstaicsearch的Listener部分代码在不断地重试编制索引而数据传输没有出现问题
报错内容:type=cluster_block_exception, reason=blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];
原因:这是因为虚拟机的linux环境被分配的磁盘内存不够,linux环境里各种容器运行起来导致占据了分配内存的95%以上。而Elstaicsearch会在内存被占据95%以上时自动改变配置,让其无法修改索引。
解决方法:
首先要增加linux虚拟机被分配的内存,使其拥有足够的空间(要求linux虚拟机运行容器后还有多于5%的空间),随后在与linux虚拟机链接的finalshell中输入以下代码用于解锁Elstaicsearch容器。
curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_cluster/settings -d '{ "transient": { "cluster.routing.allocation.disk.threshold_enabled": false } }'