将 Spring boot 与 Elasticsearch 集成的最佳方式

2024-03-23

我是 Elasticsearch 的新手。我们正在使用 Elasticsearch 构建 Spring boot 应用程序。

目前,我们必须使用 Spring Boot 2.1.3.RELEASE,但我们可以使用最新的稳定 Elastic search 版本。

做了一些研发,发现了以下两个与 Elastic search 集成的依赖项。

1. elasticsearch-rest-high-level-client
2. spring-boot-starter-data-elasticsearch

可能还有其他方法将 Spring boot 与 Elastic search 集成。

任何人都可以帮助确定将 Spring boot 与 Elastic search 集成的最佳方式吗?

根据上面提供的 Spring boot 版本,我应该使用哪个版本的 Elastic search?


来到Elasticsearch版本,请参考这个网站:
https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#preface.versions https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#preface.versions

为了将 Elasticsearch 与 SpringBoot 结合使用,我们包含三个依赖项:

        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>6.2.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.elasticsearch.client/elasticsearch-rest-high-level-client -->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>6.2.2</version>
        </dependency>

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

如您所见,我的 Elasticsearch 版本是 6.2.2(以匹配服务器端版本),我的 Spring 版本是 2.1.13.RELEASE。

基本上使用了2个客户端。我建议您使用 Rest High Level Client。另一种是传输客户端。

以下是将 Rest High Level Client 集成到您的应用程序中的方法:

@Configuration
public class ElasticClientService extends AbstractElasticsearchConfiguration {

  @Override
  @Bean
  public RestHighLevelClient elasticsearchClient() {
    final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
        .connectedTo("localhost:9200").build();
    return RestClients.create(clientConfiguration).rest();
  }
}

创建客户端后,剩下的就是执行 CRUD 操作。

  @Autowired
  ElasticClientService client;

  public void save(Object object, String id, String type, String indexName) throws IOException {
    ObjectMapper objectMapper = new ObjectMapper();
    Map<String, Object> objectMap = objectMapper.convertValue(object, Map.class);
    IndexRequest indexRequest = new IndexRequest(indexName, type, id);
    indexRequest.source(objectMap);
    IndexResponse response = client.elasticsearchClient().index(indexRequest);
  }

  public void deleteById(String id, String type, String indexName) throws IOException {
    DeleteRequest request = new DeleteRequest(indexName, type, id);
    DeleteResponse deleteResponse = client.elasticsearchClient().delete(request);
  }

以上两个操作在弹性索引中创建一个文档(行),并根据ID从弹性索引中删除一个文档(行)。

更多参考请参见:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.2/java-rest-high-document-delete.html https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.2/java-rest-high-document-delete.html *
*根据您的需要更改版本

你可以参考this https://github.com/spring-projects/spring-data-elasticsearch为进一步协助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Spring boot 与 Elasticsearch 集成的最佳方式 的相关文章

  • 打印星号的 ASCII 菱形

    我的程序打印出这样的钻石 但只有当参数或菱形的每一面为4 例如如果我输入6 底部三角形的间距是错误的 我一直在试图找出答案 当参数改变时 底部的三角形不会改变 只有顶部的三角形会改变 它只适用于输入4 public static void
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • 如何在代理后面安装 Eclipse Neon

    对于 Neon Eclipse 附带了一个安装程序 我在安装程序中找不到任何配置菜单 我的java版本是 java version java version 1 8 0 72 Java TM SE Runtime Environment b
  • Spring Security SAML2 使用 G Suite 作为 Idp

    我正在尝试使用 Spring Security 5 3 3 RELEASE 来处理 Spring Boot 应用程序中的 SAML2 身份验证 Spring Boot 应用程序将成为 SP G Suite 将成为 IDP 在我的 Maven
  • ConcurrentHashMap 内部是如何工作的?

    我正在阅读有关 Java 并发性的 Oracle 官方文档 我想知道Collection由返回 public static
  • Jackson XML ArrayList 输出具有两个包装器元素

    我在 Jackson 生成的 XML 输出中得到了两个包装器元素 我只想拥有一个 我有一个 Java bean Entity Table name CITIES JacksonXmlRootElement localName City pu
  • 套接字的读写如何同步?

    我们创建一个套接字 在套接字的一侧有一个 服务器 在另一侧有一个 客户端 服务器和客户端都可以向套接字写入和读取 这是我的理解 我不明白以下事情 如果服务器从套接字读取数据 它在套接字中是否只看到客户端写入套接字的内容 我的意思是 如果服务
  • 合并来自多个 spring-boot YAML 文件的列表

    是否可以组合使用 YAML 编写的多个 spring boot 配置文件中相同元素的列表 Example postgres yml包含我的 postgres 数据库信息 它还包含我的迁移脚本的飞行路径位置 flyway locations
  • Java Swing For mac 中的 DJ Native Swing 浏览器

    我有一个用 Swing 制作的 Java 应用程序 并且使用了一个 DJ Native Swing 浏览器 当我尝试在 OS X 上使用它时 它抛出了一个NoClassDefFoundError尽管我添加了 swt jar 但始终如此 有人
  • 如何避免 ArrayIndexOutOfBoundsException 或 IndexOutOfBoundsException? [复制]

    这个问题在这里已经有答案了 如果你的问题是我得到了java lang ArrayIndexOutOfBoundsException在我的代码中 我不明白为什么会发生这种情况 这意味着什么以及如何避免它 这应该是最全面的典范 https me
  • 内部存储的安全性如何?

    我需要的 对于 Android 我需要永久保存数据 但也能够编辑 并且显然是读取 它 用户不应访问此数据 它可以包含诸如高分之类的内容 用户不得对其进行编辑 我的问题 我会 并且已经 使用过Internal Storage 但我不确定它实际
  • Freemarker 和 Struts 2,有时它计算为序列+扩展哈希

    首先我要说的是 使用 Struts2 Freemarker 真是太棒了 然而有些事情让我发疯 因为我不明白为什么会发生这种情况 我在这里问是因为也许其他人有一个想法可以分享 我有一个动作 有一个属性 说 private String myT
  • QuerySyntaxException:无法找到类

    我正在使用 hql 生成 JunctionManagementListDto 类的实际 Java 对象 但我最终在控制台上出现以下异常 org hibernate hql internal ast QuerySyntaxException
  • Maven 中不同配置文件的不同 SCM

    在我的项目中 我们必须使用 maben build number 插件来构造 jar 的最终名称 为此我们使用 SCN 的修订版 因此我们需要 SCM 但是我们在无法直接访问的受控环境和本地测试环境上有两个 SVN 因此对于我们的 poup
  • 是否可以使用 Java Guava 将函数应用于集合?

    我想使用 Guava 将函数应用于集合 地图等 基本上 我需要调整 a 的行和列的大小Table分别使所有行和列的大小相同 执行如下操作 Table
  • Hamcrest Matchers - 断言列表类型

    问题 我目前正在尝试使用 Hamcrest Matchers 来断言返回的列表类型是特定类型 例如 假设我的服务调用返回以下列表 List
  • Resteasy 可以查看 JAX-RS 方法的参数类型吗?

    我们使用 Resteasy 3 0 9 作为 JAX RS Web 服务 最近切换到 3 0 19 我们开始看到很多RESTEASY002142 Multiple resource methods match request警告 例如 我们
  • Java中HashMap和ArrayList的区别?

    在爪哇 ArrayList and HashMap被用作集合 但我不明白我们应该在哪些情况下使用ArrayList以及使用时间HashMap 他们两者之间的主要区别是什么 您具体询问的是 ArrayList 和 HashMap 但我认为要完
  • 如何使用play框架上传多个文件?

    我在用play framework 2 1 2 使用java我正在创建视图来上传多个文件 我的代码在这里 form action routes upload up enctype gt multipart form data

随机推荐

  • PHP,preg_replace,用标签属性替换标签

    我可以详细解释一下如何使用 php 替换具有当前 attr 的标记吗 我阅读了手册和一些参考资料 如何使用php preg replace替换HTML标签 https stackoverflow com questions 3376051
  • 不允许序列化“Doctrine\DBAL\Driver\PDOConnection”

    我正在做一个项目 我做了一个可导出的课程 这是班级 我正在发送查询以导出类型 Illuminate Database Eloquent Builder
  • 检查是否已经过去 24 小时(从字符串中读取)

    我将日期作为字符串保存在以下格式的文件中 Sat Jul 21 23 31 55 EDT 2012 如何查看是否已经过了 24 小时 我是初学者 所以请解释一下 我不确定我是否完全理解这个问题 您是否有两个日期可供比较 或者您是否希望定期检
  • 在 Jenkins 中设置特定的 Python

    我对配置 Jenkins 或 Python 很陌生 但我必须在 Jenkins 中设置统一测试 我的程序是用Python编写的 但仅适用于Python 2 6 而我应该使用的Jenkins版本是2 7 所以我尝试设置Jenkins来设置一些
  • 将可变数量的变量传递给 PHP 中的类

    我需要传递可变数量的字符串来实例化不同的类 我总是可以对数组的大小进行切换 switch count a case 1 new Class a 0 break case 2 new Class a 0 a 1 break etc 必须有更好
  • Prolog 中的掩码

    我最近一直在尝试理解 Prolog 并且一直在搞乱 Prolog 中的列表列表 我正在尝试创建一种我想在 p 中的面具 序言 我有一个谓词 它确定 Prolog 中两个列表列表 比如说 L1 和 L2 之间的差异 并将它们保存为列表列表 比
  • 如何测试是否支持稀疏文件

    给定文件描述符或文件名 我如何知道是否可以写入任意位置 而无需等待磁盘上的中间部分被显式清零 You can stat 文件获取文件大小和磁盘块数量 在文件末尾查找相对较少数量的磁盘块 写入已知数量的块 然后再次统计文件 将磁盘块的原始数量
  • 移动提供商无法进行 UDP 打洞

    实际上 我正在编写一个 Android 应用程序 该应用程序接收连接到 PC 的网络摄像头的图片 为了获得更多的 fps 我使用 udp 协议而不是 tcp 这个想法是 电脑将图片发送到手机的 IP 和端口 但电话提供商有不同的公共端口 所
  • 在 iOS 中检索通过蓝牙连接的配对设备

    我已连接条形码扫描仪设备 条码扫描仪信息 http www barcodedatalink com pages product details php p 108 我想知道它的配对状态 是否与设备连接 void centralManager
  • Django 使用 ManytoMany 作为外键

    我正在尝试使用多对多关系作为另一个表的外键 但我不确定这是否可能 考虑以下模型 from django db import models class Attribute models Model name models CharField
  • 通过类的java sql连接

    我有以下代码 import java sql import java net public class binsz public void dbConnect String db connect string String username
  • 带数据触发器的 WPF 动画

    我有一个矩形 我正在为其背景颜色设置动画 每次特定数字上升时 它都应该变为绿色 下跌时呈红色 如果数字一段时间内没有变化 它会慢慢淡回默认颜色 因此 动画非常快速地将背景从灰色变为红色 然后需要几秒钟的时间才能淡出回灰色 我已添加为 Dat
  • 如何在 Xcode 4 中从断点操作打印字符串值?

    我有一个断点操作 并且正在使用下拉列表中的 日志 选项 我想打印出字符串 摘要 值 我正在这样做 the person name is p name 但这会打印内存地址 我可以切换到调试器命令选项并执行以下操作 po f name 但后来我
  • 如何创建不安全的 jupyter 服务器

    Jupyter 只允许从本地主机访问 除非我做了一些额外的安全工作 我正在运行我的服务器 以便它只能在本地网络上访问 任何有权访问的人都与本地主机具有相同的可信度 如何设置没有额外安全功能的 jupyter 笔记本服务器 根据您的问题 我希
  • HTML5 视频控件不起作用

    我做了很多研究 尽管有些问题 评论确实为我指明了正确的方向 但我仍然停滞不前 摘要 HTML5 视频显示控件 但无法单击 当你浏览它们时 它们就会消失 您无法单击暂停 播放 静音等任何操作 请帮我弄清楚发生了什么事 该网站是www inno
  • OpenCV 中的 Matlab Conv2 等效项

    我一直在尝试使用 OpenCV 对 2D 矩阵进行卷积 我实际上经历过这段代码http blog timmlinder com 2011 07 opencv equivalent to matlabs conv2 function resp
  • 类似热图的图,但适用于 seaborn 中的分类变量

    同样的问题类似热图的图 但适用于分类变量 https stackoverflow com questions 12998372但使用 python 和 seaborn 而不是 R 假设我有以下数据框 df pd DataFrame John
  • Gecko 清除缓存历史记录和 cookie

    帮助 我用GeckoFx Windows 10 0 0 6对于浏览器和xulrunner 10 0 en US win32 Visual Studio 2010 c 一切正常 但我需要清除 Firefox 中的所有历史记录 工具 gt gt
  • 为什么 OpenMP SIMD 指令会降低性能?

    我正在学习如何在 OpenMP Fortran 中使用 SIMD 指令 我 写了简单的代码 program loop implicit none integer i j real 8 x x 0 0 do i 1 10000 do j 1
  • 将 Spring boot 与 Elasticsearch 集成的最佳方式

    我是 Elasticsearch 的新手 我们正在使用 Elasticsearch 构建 Spring boot 应用程序 目前 我们必须使用 Spring Boot 2 1 3 RELEASE 但我们可以使用最新的稳定 Elastic s