Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Spring Data ES 3.2.0.M1中使用高级Rest客户端 - Fatal编程技术网

如何在Spring Data ES 3.2.0.M1中使用高级Rest客户端

如何在Spring Data ES 3.2.0.M1中使用高级Rest客户端,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,Spring Data ES 3.2.0.M1仍然使用旧的TransportClient而不是HighLevelRestClient Spring数据ES 3.2.0.M1支持高级Rest客户端,请参阅。我已将Spring数据ES 3.2.0.M1添加到SB2应用程序中: <dependency> <groupId>org.springframework.data</groupId> <ar

Spring Data ES 3.2.0.M1仍然使用旧的
TransportClient
而不是
HighLevelRestClient

Spring数据ES 3.2.0.M1支持高级Rest客户端,请参阅。我已将Spring数据ES 3.2.0.M1添加到SB2应用程序中:

        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-elasticsearch</artifactId>
            <version>3.2.0.M1</version>
        </dependency>
调用ElasticsearchTemplate时出现异常stacktrace

    at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:349)
    at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:247)
    at org.elasticsearch.client.transport.TransportProxyClient.execute(TransportProxyClient.java:60)
    at org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:382)
    at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:395)
    at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:384)
    at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:46)
    at org.springframework.data.elasticsearch.core.ElasticsearchTemplate.getSearchResponse(ElasticsearchTemplate.java:947)
是否有任何配置参数告诉Spring Data ES切换到新的高级Rest客户端?医生们对此只字不提

p.S.Spring数据ES 3.2.0.M1有6.4.3 ES客户端版本:

Caused by: java.io.StreamCorruptedException: invalid internal transport message format, got (48,54,54,50)
    at org.elasticsearch.transport.TcpTransport.validateMessageHeader(TcpTransport.java:1327) ~[elasticsearch-6.4.3.jar:6.4.3]
    at org.elasticsearch.transport.netty4.Netty4SizeHeaderFrameDecoder.decode(Netty4SizeHeaderFrameDecoder.java:36) ~[transport-netty4-client-6.4.3.jar:6.4.3]
    at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:502) ~[netty-codec-4.1.33.Final.jar:4.1.33.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:441) ~[netty-codec-4.1.33.Final.jar:4.1.33.Final]
    ... 20 common frames omitted
后端运行6.4.2版本:


正如您所指的问题中提到的,高级REST客户端在(请参阅)中提供,而不是在
ElasticsearchTemplate
中,出于向后兼容性的原因,他们将保留到ES 7

您可以使用以下配置创建一个:

<bean name="elasticsearchTemplate"
      class="org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate">
    <constructor-arg name="client" ref="restClient"/>
</bean>

<elasticsearch:rest-client id="restClient"/>


事实上,切换到
ElasticsearchRestTemplate
有助于访问ES 6.4。谢谢将其放入文档中是有意义的:但是,Netty仍然有
WARN
日志。客户端上的ES版本
elasticsearch-6.4.3.jar
和后端相互匹配。有什么提示吗?您确实需要确保在相同版本的ES服务器上使用正确版本的Spring Data ES。我已经用客户端和后端ES版本更新了这个问题。ES版本几乎相互匹配:客户端上的6.4.3和后端上的6.4.2是否所有节点都使用相同的版本?问题不在于REST客户机,而在于TransportClient,它使用的版本与正在与之通信的ES服务器不同。
bash-4.4$ curl http://127.0.0.1:8085
{
  "name" : "NA17WWR",
  "cluster_name" : "494164851665",
  "cluster_uuid" : "7t3LoK7PRp-ur6FyxSmHwQ",
  "version" : {
    "number" : "6.4.2",
    "build_flavor" : "oss",
    "build_type" : "zip",
    "build_hash" : "04711c2",
    "build_date" : "2018-10-16T09:16:35.059415Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}
<bean name="elasticsearchTemplate"
      class="org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate">
    <constructor-arg name="client" ref="restClient"/>
</bean>

<elasticsearch:rest-client id="restClient"/>