Sha*_*gab 0 spring-data-elasticsearch testcontainers
我的测试用例中有以下弹性搜索容器配置
@Container
public static GenericContainer container = new GenericContainer<>("elasticsearch:7.7.0")
.withExposedPorts(9200,9300).withEnv("discovery.type","single-node")
.withNetwork(Network.newNetwork())
.withNetworkAliases("someNetwork");
Run Code Online (Sandbox Code Playgroud)
在@BeforeAll 注释方法中,我像这样弹性搜索 url 属性
System.setProperty("spring.data.elasticsearch.cluster-nodes", container.getContainerIpAddress() + ":" + container.getMappedPort(9300));
Run Code Online (Sandbox Code Playgroud)
当我检查正在运行的容器时(在测试用例调试暂停期间),从 power shell 中,我在端口列下发现了类似的内容: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.readable(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) at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104) at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker。 run(AbstractMultiworkerIOReactor.java:591) at 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) at org.apache.http.impl.nio.codecs.AbstractMessageParser.parse(AbstractMessageParser.java:207) ... 11 更多
`
您正在使用 REST 客户端访问端口 9300 上的 Elasticsearch。这是 TransportClient 的端口。使用 REST 客户端,您需要以端口 9200 为目标。
| 归档时间: |
|
| 查看次数: |
1751 次 |
| 最近记录: |