Elasticsearch(ES)在启动时会执行一系列检查,以确保它运行在稳定和兼容的环境中。其中一项检查就是针对OpenJDK的早期访问(Early Access)版本。OpenJDK的Early Access版本是为即将发布的版本提供的预览版,它们可能包含新的功能和改进,但这些版本并不适用于生产环境。
Elasticsearch进行Early Access检查的目的是确保它不会在这些预览版上启动,以避免生产环境中可能出现的不稳定性或数据丢失的风险。如果Elasticsearch检测到它正在尝试在Early Access版本的JVM上运行,它将不允许启动,并给出相应的错误信息。
根据讨论,如果用户希望在Elasticsearch上使用OpenJDK Early Access版本,他们可以采取以下措施:
-
创建一个自定义构建,该构建已禁用或删除了此检查。但这不是一个简单的任务,可能需要一些技术工作。
-
向Elasticsearch的GitHub存储库提交问题,并开始讨论是否允许使用OpenJDK EA版本。
-
如果Elasticsearch配置为不绑定到外部接口,并且运行的是单节点集群,那么启动时将跳过引导检查。这可以通过设置`network.host: 127.0.0.1`和`discovery.type: single-node`在`elasticsearch.yml`配置文件中实现。
然而,Alexander Reelsen(Elasticsearch的一名维护者)指出,这个引导检查是有意添加的,因此不太可能被移除。他建议,如果用户确实需要在生产环境中运行Early Access版本,应该提出充分的理由,并在GitHub上发起讨论。
Elasticsearch官方文档也提到了这一点,强调为了通过Early Access检查,必须在JVM的稳定版本上启动Elasticsearch。
总的来说,Elasticsearch的Early Access检查是一项预防措施,旨在保护用户避免在生产环境中使用可能不稳定的JVM版本。如果用户需要测试新功能,建议在开发或测试环境中使用Early Access版本,并在生产环境中使用稳定的JVM版本。