spring数据弹性搜索不是有效的协议版本:这不是HTTP端口

问题描述 投票:0回答:1

我的测试用例中具有以下弹性搜索容器配置

    @Container
    public static  GenericContainer container = new GenericContainer<>("elasticsearch:7.7.0")
        .withExposedPorts(9200,9300).withEnv("discovery.type","single-node")
        .withNetwork(Network.newNetwork())
        .withNetworkAliases("someNetwork");

在@BeforeAll带注释的方法中,我像这样的elasticsearch url属性

System.setProperty("spring.data.elasticsearch.cluster-nodes", container.getContainerIpAddress() + ":" + container.getMappedPort(9300));

从电源外壳检查运行容器时(在测试用例调试暂停期间),在端口列下找到类似的内容:0.0.0.0:32844-> 9200 / tcp,0.0.0.0:32843->9300 / tcp当我打印container.getContainerIpAddress()+“:” + container.getMappedPort(9300)时,我在容器端口列中获得了映射到9300的相同端口,在本例中为[[localhost:32843确保端口是随机的,并在每次新运行中更改。

当代码

`conf = repo.save(conf);

运行时,出现以下异常:
由:org.apache.http.ProtocolException引起:

无效的协议版本:这不是HTTP端口

在org.apache.http.impl.nio.codecs.AbstractMessageParser.parse(AbstractMessageParser.java:209)在org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:245)在org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:81)在org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:39)在org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:114)在org.apache.http.impl.nio.reactor.BaseIOReactor。可读(BaseIOReactor.java:162)在org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337)在org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315)在org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276)在org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104)在org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor $ Worker.run(AbstractMultiworkerIOReactor.java:591)在java.base / java.lang.Thread.run(Thread.java:834)原因:org.apache.http.ParseException:无效的协议版本:这不是HTTP端口在org.apache.http.message.BasicLineParser.parseProtocolVersion(BasicLineParser.java:148)在org.apache.http.message.BasicLineParser.parseStatusLine(BasicLineParser.java:366)在org.apache.http.impl.nio.codecs.DefaultHttpResponseParser.createMessage(DefaultHttpResponseParser.java:112)在org.apache.http.impl.nio.codecs.DefaultHttpResponseParser.createMessage(DefaultHttpResponseParser.java:50)在org.apache.http.impl.nio.codecs.AbstractMessageParser.parseHeadLine(AbstractMessageParser.java:156)在org.apache.http.impl.nio.codecs.AbstractMessageParser.parse(AbstractMessageParser.java:207)...另外11个`
spring-data-elasticsearch testcontainers
1个回答
0
投票
您正在使用REST客户端访问端口9300上的Elasticsearch。这是TransportClient的端口。知道需要将9200端口设为目标的REST客户端。
© www.soinside.com 2019 - 2024. All rights reserved.