弹性搜索服务器不会在新节点上启动。如果出现以下错误,它将失败:
[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。我为根记录器启用了跟踪日志,但无法识别新节点的问题所在。
请帮助找出这个问题的根本原因。
发布于 2019-12-17 13:57:11
理论解释:
公共类ArrayIndexOutOfBoundsException扩展IndexOutOfBoundsException
引发,以指示已使用非法索引访问数组。索引不是负的,就是大于或等于数组的大小。
如何避免:
在您的例子中,它是由: java.lang.ArrayIndexOutOfBoundsException: 4引起的
在Java中遍历数组时,您应该始终支付一次性错误。程序员经常犯错误,导致在for循环中错误地使用the <,>,> >= or <= operator,导致数组的第一个或最后一个元素丢失,或者在最后一个元素之前完成。
这里我已经复制了你的错误:

https://stackoverflow.com/questions/56782549
复制相似问题