You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch 5.2.0启动失败报错java.lang.IllegalStateException: No match found求助

解决Elasticsearch 5.2.0启动失败:java.lang.IllegalStateException: No match found

我为学校项目尝试部署Elastic Stack(指定版本Elasticsearch 5.2.0,配套Logstash 5.2.0和Kibana 5.2.0)已经两天了,但Elasticsearch始终启动失败。我已经安装了Java8和Java11,目前使用Java8运行ES 5.2.0,启动时抛出如下错误日志:

[2022-11-17T20:37:58,110][INFO ][o.e.p.PluginsService     ] [F-2-m97] loaded module [reindex]
[2022-11-17T20:37:58,110][INFO ][o.e.p.PluginsService     ] [F-2-m97] loaded module [transport-netty3]
[2022-11-17T20:37:58,110][INFO ][o.e.p.PluginsService     ] [F-2-m97] loaded module [transport-netty4]
[2022-11-17T20:37:58,110][INFO ][o.e.p.PluginsService     ] [F-2-m97] no plugins loaded
[2022-11-17T20:37:58,779][ERROR][o.e.b.Bootstrap          ] Exception
java.lang.IllegalStateException: No match found
        at java.util.regex.Matcher.group(Matcher.java:645) ~[?:?]
        at org.elasticsearch.monitor.os.OsProbe.getControlGroups(OsProbe.java:216) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.monitor.os.OsProbe.getCgroup(OsProbe.java:414) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.monitor.os.OsProbe.osStats(OsProbe.java:466) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.monitor.os.OsService.<init>(OsService.java:45) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.monitor.MonitorService.<init>(MonitorService.java:45) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.node.Node.<init>(Node.java:345) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.node.Node.<init>(Node.java:232) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.bootstrap.Bootstrap$6.<init>(Bootstrap.java:241) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:241) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) [elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) [elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) [elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.cli.SettingCommand.execute(SettingCommand.java:54) [elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) [elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.cli.Command.main(Command.java:88) [elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:89) [elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:82) [elasticsearch-5.2.0.jar:5.2.0]
[2022-11-17T20:37:58,788][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: No match found
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.cli.SettingCommand.execute(SettingCommand.java:54) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.cli.Command.main(Command.java:88) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:89) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:82) ~[elasticsearch-5.2.0.jar:5.2.0]
Caused by: java.lang.IllegalStateException: No match found
        at java.util.regex.Matcher.group(Matcher.java:645) ~[?:?]
        at org.elasticsearch.monitor.os.OsProbe.getControlGroups(OsProbe.java:216) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.monitor.os.OsProbe.getCgroup(OsProbe.java:414) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.monitor.os.OsProbe.osStats(OsProbe.java:466) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.monitor.os.OsService.<init>(OsService.java:45) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.monitor.MonitorService.<init>(MonitorService.java:45) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.node.Node.<init>(Node.java:345) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.node.Node.<init>(Node.java:232) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.bootstrap.Bootstrap$6.<init>(Bootstrap.java:241) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:241) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~[elasticsearch-5.2.0.jar:5.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-5.2.0.jar:5.2.0]
        ... 6 more

问题原因

Elasticsearch 5.2.0的OsProbe类在解析系统cgroup(控制组)信息时,内嵌的正则表达式无法匹配当前系统的cgroup格式。较新的Linux发行版(如Ubuntu 20.04+、CentOS 8+)的cgroup结构与ES 5.2.0发布时的格式差异较大,导致正则匹配失败,最终触发启动异常。

修复方法

方法1:添加JVM参数强制指定cgroup层级

在Elasticsearch的config/jvm.options文件末尾添加一行:

-Dcgroup.jvm.hierarchy.override=/

该参数会强制ES使用根cgroup,绕过原有存在问题的正则匹配逻辑,是最安全有效的解决方案。

方法2:关闭系统调用过滤

在config/elasticsearch.yml文件中添加以下配置:

bootstrap.system_call_filter: false

此方法关闭ES的系统调用安全过滤机制,虽然能解决启动问题,但会降低系统安全性,仅建议在测试或开发环境中使用。

方法3:修改OsProbe类的正则表达式(不推荐)

若上述方法无效,可反编译elasticsearch-5.2.0.jar中的org.elasticsearch.monitor.os.OsProbe类,调整其中的正则表达式以适配当前系统的cgroup格式,再重新编译打包。此方法操作复杂,仅适合具备Java开发基础的用户。

内容的提问来源于stack exchange,提问作者OlaJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 00:16:15