弹性搜索服务器未在新节点上启动。它失败并显示以下错误:
[2019-06-27T00:16:01,471][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [node-10] fatal error in thread [main], exiting
java.lang.ExceptionInInitializerError: null
at java.lang.Class.forName0(Native Method) ~[?:1.8.0_212]
at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_212]
at org.elasticsearch.painless.Definition.addStruct(Definition.java:753) ~[?:?]
at org.elasticsearch.painless.Definition.<init>(Definition.java:566) ~[?:?]
at org.elasticsearch.painless.PainlessScriptEngine.<init>(PainlessScriptEngine.java:106) ~[?:?]
at org.elasticsearch.painless.PainlessPlugin.getScriptEngine(PainlessPlugin.java:59) ~[?:?]
at org.elasticsearch.script.ScriptModule.<init>(ScriptModule.java:69) ~[elasticsearch-6.2.2.jar:6.2.2]
at org.elasticsearch.node.Node.<init>(Node.java:327) ~[elasticsearch-6.2.2.jar:6.2.2]
at org.elasticsearch.node.Node.<init>(Node.java:246) ~[elasticsearch-6.2.2.jar:6.2.2]
at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:213) ~[elasticsearch-6.2.2.jar:6.2.2]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:213) ~[elasticsearch-6.2.2.jar:6.2.2]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:323) ~[elasticsearch-6.2.2.jar:6.2.2]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.2.2.jar:6.2.2]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.2.2.jar:6.2.2]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.2.jar:6.2.2]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.2.jar:6.2.2]
at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.2.2.jar:6.2.2]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.2.2.jar:6.2.2]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.2.2.jar:6.2.2]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 4
at java.time.chrono.JapaneseEra.<clinit>(JapaneseEra.java:179) ~[?:1.8.0_212]
... 19 more
我已经在GCP中的生产环境中运行了一个5节点集群。由于负载增加,因此我尝试向该群集添加更多节点。为了创建新节点,我使用了GCP提供的“创建相似”选项。我更新了节点名称之类的所有配置,并删除了/ var / lib / elasticsearch / nodes文件夹,并尝试在新节点上启动ES服务器。但是它总是会因上述错误而失败。
此节点使用OpenJDK 1.8。我为根记录器启用了跟踪日志,但是无法确定新节点出了什么问题。
请帮助确定此问题的根本原因。
答案 0 :(得分:0)
理论解释:
公共类 ArrayIndexOutOfBoundsException 扩展了 IndexOutOfBoundsException
抛出该错误指示已使用非法索引访问了数组。索引为负或大于或等于数组的大小。
如何避免:
在您的情况下,它是发生于:java.lang.ArrayIndexOutOfBoundsException:4
在遍历Java中的数组时,您应该始终避免一次性错误。程序员经常犯错误,导致第一个元素混乱,或者通过错误地在for循环中使用<,>,>> =或<=操作符来丢失数组的第一个或最后一个元素。
在这里,我已重现您的错误: