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

2024-04-03

Spring Data ES 3.2.0.M1 仍然使用旧的TransportClient代替HighLevelRestClient

Spring Data ES 3.2.0.M1 支持高级 Rest 客户端,请参阅添加对 Java 高级 REST 客户端的支持 https://jira.spring.io/browse/DATAES-407。我已将 Spring Data ES 3.2.0.M1 添加到 SB2 应用程序:

        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-elasticsearch</artifactId>
            <version>3.2.0.M1</version>
        </dependency>

然而,仍然TransportClient用来。有两个迹象表明:启动时出现异常:

o.e.transport.netty4.Netty4Transport     : exception caught on transport layer [NettyTcpChannel{localAddress=/127.0.0.1:61171, remoteAddress=localhost/127.0.0.1:8085}], closing connection

io.netty.handler.codec.DecoderException: java.io.StreamCorruptedException: invalid internal transport message format, got (48,54,54,50)
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:472) ~[netty-codec-4.1.33.Final.jar:4.1.33.Final]

和调用时的异常堆栈跟踪ElasticsearchTemplate:

    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 客户端?文档对此只字未提。

附: Spring Data ES 3.2.0.M1 有6.4.3ES客户端版本:

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版本:

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"
}

正如您所提到的问题中提到的,高级 REST 客户端可在ElasticsearchRestTemplate https://github.com/spring-projects/spring-data-elasticsearch/blob/master/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java (see PR #216 https://github.com/spring-projects/spring-data-elasticsearch/pull/216)不在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"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Spring Data ES 3.2.0.M1 中使用高级 Rest 客户端 的相关文章

随机推荐

  • sbt 目录结构中非托管 jar 的 lib 目录在哪里?

    我正在尝试将 jar 文件添加到 sbt 项目中 但我不知道将它们存储在哪里 sbt 文档说 只需将它们放入 lib 文件夹中 就可以了 但没有提供任何有关实际放置此 lib 文件夹的位置的信息 lib文件夹是否在src下 在 src 文件
  • 如何为 JavaScript 数组中的每个对象动态添加属性

    我试图循环遍历对象数组 为每个对象添加属性和值 表的顺序很重要 因为我试图使用可手动视图作为客户端来检索服务器端 mysql 表的内容 我希望 Handsontable 视图具有与表相同的列顺序 但我想插入一个复选框列作为第一列以允许记录选
  • 有人知道如何在Python中打开/关闭大写锁定吗?

    我试图在按住两个 Shift 按钮一秒钟时打开 关闭大写锁定 我尝试过使用 virtkey 模块 但它不起作用 不过 该模块确实适用于其他键 所以我认为我没有错误地使用该模块 有人有办法做到这一点吗 需要明确的是 我想要实际打开 关闭大写锁
  • Twitter-Bootstrap - 将简单元素内联

    有没有办法放2 a 元素显示内联 我试过 div class form inline a jjj a a sss a div and also div class row fluid a class inline jjj a a class
  • 有没有一个插件可以在我的网页中显示 HTML 代码

    我想在我的页面中显示大块 LESS 文件 我希望它看起来尽可能漂亮 以便看到它的用户能够轻松阅读 stackoverflow 让我像这样显示它 例如 header color red div myClass color blue 但是有没有
  • 如何用C#打印存储在本地硬盘上的文件?

    我在 C WinForms 中创建了一个函数 它将文件作为 gif 图像保存在本地目录中 如何访问它并将其发送到我的一台网络打印机进行打印 我现在这里有这段代码 internal void PrintLabels string printe
  • 使用 OCaml Graphics 实际更改文本大小

    我想知道如何在 OCaml 中设置文本大小 我试过Graphics set text size我想这应该可以达成交易 但无论我把set text size 200 or set text size 20并没有改变什么 Graphics se
  • 查找数字数组中两个最近元素之间的距离

    所以我正在自学我购买的这本书中的算法 并且我有一个伪代码用于查找数字数组中两个最近元素之间的距离 MinDistance a 0 n 1 Input Array A of numbers Output Minimum Distance be
  • 在文件下载响应时重新启用表单提交按钮

    这可能是一个非常简单的问题 但实际上我还没有看到很多这方面的搜索结果 我在表单中有一个非常基本的提交按钮 它接受一些用户输入 并在服务器的临时目录中生成一个可下载文件 然后提示用户下载该文件 然后在提交时禁用该文件
  • Rails:生产中不存在可供参考的类名关系

    我在迁移中创建了两个引用 它们是对我的 User 表的引用的别名 class CreateInvitations lt ActiveRecord Migration 5 0 def change create table invitatio
  • ALS模型-如何生成full_u * v^t * v?

    我试图弄清楚 ALS 模型如何在批处理更新期间预测新用户的值 在我的搜索中 我遇到了这个堆栈溢出答案 https stackoverflow com a 34729751 1033422 为了方便读者 我将答案复制如下 您可以使用经过训练的
  • 如何在链轮预处理的 js 文件(不是视图)中获取 escape_javascript 和其他帮助程序?

    我正在使用 Rails 3 1 和链轮的东西 我想使用 ERB 预处理 js 文件 然后使用 javascript include tag 包含该文件 它是从代码生成的 因此我使用 ERB 对其进行预处理 但我无法从 ActionView
  • 合并从 python 多进程调用函数返回的数据帧

    from multiprocessing import Pool with Pool processes 6 as p p starmap update tabl zip r 我正在使用此处概述的方法 https web archive o
  • 使用回调令牌的 PHP EWS

    有没有人有幸使用 EWS 回调令牌而不是用户名 密码对来自 PHP 的 EWS SOAP 请求进行身份验证 我一直在看PHP EWS https github com jamesiarmes php ews当您在谷歌上搜索此项目时会出现该项
  • 带下拉图标 V 形的 Bootstrap 手风琴导航

    我有一个引导导航选项卡导航堆叠列表 需要使用手风琴折叠所有列表 除了最近单击的列表或具有活动子项的列表 我有这个工作 但似乎无法弄清楚如何让 V 形改变方向 除非点击 我以前只是将其设置为折叠 而不是手风琴折叠 所以需要一些 javascr
  • 如何以静默模式提取 WinZip 自解压 exe

    我使用 WinZip Self Extractor 创建了一个 exe 文件 它以 UI 模式提取文件 即双击安装程序时会打开一个新窗口 显示正在解压缩 setupname exe 我需要在静默模式下提取相同的 exe 该模式不应显示解压缩
  • 使用内部脚本设置innerHTML [重复]

    这个问题在这里已经有答案了 如果我在任何页面上的 Firebug 中运行以下行 document documentElement innerHTML 为什么不是alert命令执行 看起来你的
  • Perl:使用 XML::Twig 插入 XML::Twig 节点

    我正在比较两个 XML 文件 如果我发现其中一个文件中缺少节点 我想将其插入到另一个文件中 这是我一直在尝试的方法 my out file fbCI report xml open my fh out gt gt out file or d
  • Intellij“作为 Android 应用程序运行”缺失

    android模拟器运行确实很慢 我发现Genymotion运行得很快 当我尝试与 Intellij 一起使用时 在我遵循此文档中的每一步之后https cloud genymotion com page doc 我陷入了这个项目 在您的应
  • 如何在 Spring Data ES 3.2.0.M1 中使用高级 Rest 客户端

    Spring Data ES 3 2 0 M1 仍然使用旧的TransportClient代替HighLevelRestClient Spring Data ES 3 2 0 M1 支持高级 Rest 客户端 请参阅添加对 Java 高级