ElasticSearch无法启动:创建Node对象时出现AssertionError

eh57zj3b  于 7个月前  发布在  ElasticSearch
关注(0)|答案(1)|浏览(79)

我正在尝试使用以下环境设置创建一个Node对象-环境设置:

Settings elasticsearchSettings = Settings.builder()
            .put("http.cors.enabled", "true")
            .put("path.data", "target/es-data_" + UUIDs.randomBase64UUID().toLowerCase())
            .put("path.home", "target/es-home_" + UUIDs.randomBase64UUID().toLowerCase())
            .put("cluster.name", "testCluster")
            .put(NetworkModule.HTTP_TYPE_KEY, "netty4")
            .put("http.port", 9200)
            .build();
 private static class ElasticNode extends Node {
        public ElasticNode(Settings settings, Collection<Class<? extends Plugin>> classpathPlugins) {
            super(InternalSettingsPreparer.prepareEnvironment(settings,new HashMap<>(), null, () -> "node1"), classpathPlugins, false);
        }
        
    }

字符串
ElasticSearch版本7.17.10,Java版本:11.0.4,供应商:Oracle Corporation,操作系统名称:“Linux”,版本:“5.15.0-67-generic”,arch:“amd 64”,家族:“UNIX”
并得到以下错误:

Caused by: java.lang.AssertionError
    #14 85.59   at org.elasticsearch.monitor.os.OsProbe.getControlGroups(OsProbe.java:262) ~[elasticsearch-7.17.10.jar:7.17.10]


我在配置中缺少了什么?请帮助!

eimct9ow

eimct9ow1#

对于集成测试,我的建议是在外部启动elasticsearch。例如,您可以使用docker compose配置它,并在运行测试之前生成它。或者,您可以将elasticsearch作为测试或gradle(如果您擅长的话)的单独进程来生成。在节点引导过程中发生的事情太多了,无法尝试在代码中复制它。
甚至elasticsearch项目本身也在一个特殊的gradle任务中生成elasticsearch集群。顺便说一下,这个任务在他们的测试框架中可用,所以你可以使用他们的gradle构建插件将这样的任务合并到你的项目中。下面是一个如何做到这一点的例子-https://github.com/imotov/esitsandbox

相关问题