Spring Boot中Elasticsearch的连接配置、原理与使用

news2024/11/13 18:29:24

Spring Boot中Elasticsearch的连接配置、原理与使用

引言

Elasticsearch是一种开源的分布式搜索和数据分析引擎,它可用于全文搜索、结构化搜索、分析等应用场景。在Spring Boot中,我们可以通过Elasticsearch实现对数据的搜索和分析。本文将介绍Spring Boot中Elasticsearch的连接配置、原理和使用方法。

在这里插入图片描述

Elasticsearch连接配置

在Spring Boot中,我们可以通过引入Elasticsearch依赖来使用它。在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

然后在application.properties或application.yml文件中添加Elasticsearch的配置:

spring.data.elasticsearch.cluster-name=my-application
spring.data.elasticsearch.cluster-nodes=localhost:9300

以上配置中,cluster-name指定了Elasticsearch集群的名称,cluster-nodes指定了Elasticsearch节点的地址和端口号。

另外,如果需要使用Elasticsearch的安全功能,可以添加以下配置:

spring.data.elasticsearch.repositories.enabled=true
spring.data.elasticsearch.cluster-nodes=localhost:9300
spring.data.elasticsearch.cluster-name=my-application
spring.data.elasticsearch.username=elastic
spring.data.elasticsearch.password=changeme

以上配置中,spring.data.elasticsearch.repositories.enabled指定启用Elasticsearch的存储库,spring.data.elasticsearch.usernamespring.data.elasticsearch.password指定了Elasticsearch的用户名和密码。当然,这需要在Elasticsearch中进行相应的配置。

Elasticsearch连接原理

Spring Boot中使用Elasticsearch连接时,需要使用Elasticsearch的Java客户端连接Elasticsearch集群。Elasticsearch的Java客户端使用TransportClient或NodeClient来连接Elasticsearch集群。

在使用TransportClient连接Elasticsearch集群时,需要指定Elasticsearch节点的地址和端口号。TransportClient会随机选择一个可用的节点进行连接,并在连接失败时自动重试连接其他节点。在连接成功后,TransportClient将与Elasticsearch集群建立TCP连接,并通过该连接与其进行通信。

在使用NodeClient连接Elasticsearch集群时,需要在应用程序中启动一个节点,该节点将与Elasticsearch集群中的其他节点通信。NodeClient使用Java API与本地节点进行通信,然后将请求转发到Elasticsearch集群中的其他节点。这种方式可以减少网络通信的成本,并提高查询和索引的性能。

Elasticsearch使用方法

在Spring Boot中,我们可以通过注入ElasticsearchTemplateElasticsearchRestTemplate来使用Elasticsearch。这两个类都实现了ElasticsearchOperations接口,提供了对Elasticsearch的各种操作。

ElasticsearchTemplate

ElasticsearchTemplate是Elasticsearch Java客户端提供的一种操作Elasticsearch集群的方式。它提供了大量的方法,包括索引、更新、删除、搜索等操作。

以下是一个使用ElasticsearchTemplate进行搜索的示例:

@Autowired
private ElasticsearchTemplate elasticsearchTemplate;

public List<Article> searchArticle(String keyword) {
    QueryBuilder queryBuilder = QueryBuilders.matchQuery("title", keyword);
    NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
            .withQuery(queryBuilder)
            .build();
    SearchHits<Article> searchHits = elasticsearchTemplate.search(searchQuery, Article.class);
    return Arrays.stream(searchHits.getHits())
            .map(SearchHit::getContent)
            .collect(Collectors.toList());
}

以上代码中,我们首先通过QueryBuilder创建了一个查询条件,然后通过NativeSearchQueryBuilder创建了一个搜索请求。最后,我们使用ElasticsearchTemplatesearch方法执行搜索,并将结果转换为Article对象列表。

ElasticsearchRestTemplate

ElasticsearchRestTemplate是Spring Data Elasticsearch提供的一种操作Elasticsearch集群的方式。它提供了大量的方法,包括索引、更新、删除、搜索等操作。与ElasticsearchTemplate不同的是,ElasticsearchRestTemplate使用REST API与Elasticsearch集群通信。

以下是一个使用ElasticsearchRestTemplate进行索引操作的示例:

@Autowired
private ElasticsearchRestTemplate elasticsearchRestTemplate;

public void indexArticle(Article article) {
    IndexQuery indexQuery = new IndexQueryBuilder()
            .withObject(article)
            .build();
    elasticsearchRestTemplate.index(indexQuery, IndexCoordinates.of("articles"));
}

以上代码中,我们首先通过IndexQueryBuilder创建了一个索引请求,然后使用ElasticsearchRestTemplateindex方法执行索引操作,将Article对象保存到名为"articles"的索引中。

结论

本文介绍了Spring Boot中Elasticsearch的连接配置、原理和使用方法。在使用Elasticsearch时,我们需要注意一些配置和使用细节,如指定Elasticsearch集群的名称和节点地址、选择合适的Java客户端等。通过本文的介绍,我们希望读者能够更好地理解Spring Boot中Elasticsearch的使用方法,并在项目中更加灵活地应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/708550.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣 -- 62.不同路径、63.不同路径2

题目链接&#xff1a;64. 最小路径和 - 力扣&#xff08;LeetCode&#xff09; 63. 不同路径 II - 力扣&#xff08;LeetCode&#xff09; 以下是用动态规划的思想来解决这两道类似的动规的题目&#xff0c;相信各位老铁都是能够学会并且掌握这两道经典的题目的。 参考代码&am…

mac上使用brew安装mysql5.7

使用Homebrew进行MySQL数据库的安装需要MacOS系统中已经安装了相关环境 1.查询软件信息 首先使用search命令搜索MySQL数据库完整名称&#xff1a; brew search mysql可以看到5.7版本的MySQL数据库完整名称是mysql5.7 2. 执行安装命令 使用install命令进行软件安装&#xf…

Proxy vs Object.defineProperty:哪种对象拦截机制更适合你?

文章目录 简述版详解版相同点不同点1. 功能不同2. 语法和使用方式不同3. 支持程度不同4. 性能差异 简述版 Proxy 和 Object.defineProperty 是 JavaScript 中用于实现对象拦截和代理的两种不同机制。 Object.defineProperty 是一种在对象上定义新属性或修改现有属性的方式。 …

eNSP-DHCP全局配置和接口配置

eNSP-DHCP全局配置和接口配置 文章目录 eNSP-DHCP全局配置和接口配置一、题目要求二、题目分析三、拓扑结构搭建四、基本配置五、测试验证 一、题目要求 要求 &#xff1a; 1 、GE0/0/0 口所在广播域使用全局配置模式 2 、 GE0/0/1 口所在广播域使用接口配置模式 3 、 租期时间…

远古 Windows 98 SE 和 putty 0.63 连接 SSH

远古 Windows 98 SE 和 putty 0.63 连接 SSH 不忘初心一、故障表现二、产生原因三、解决办法四、重启 SSHD 服务生交配置参考 作者&#xff1a;高玉涵 时间&#xff1a;2023.7.1 操作系统&#xff1a; Windows 98 第二版 4.10.2222 A Linux version 5.19.0-32-generic (build…

慧灵六轴机械臂和电动夹爪,适配全自动粉面烘焙机器人

近日&#xff0c;慧灵科技HITBOT推出的六轴机械臂和平行电动夹爪等产品&#xff0c;出现在一台全自动粉面&烘焙机器&#xff0c;为煮饺子、云吞、面条的传统方式注入了现代科技的力量。这台机器结合了先进的六轴机械臂产品和精密的智能控制系统&#xff0c;能够在短时间内完…

CleanMyMac X中文版Mac电脑系统清理工具使用测评

有些人可能会说&#xff0c;mac系统根本就不需要清理&#xff0c;但是真正到你磁盘快满的时候就不是这种想法了&#xff0c;不管什么系统&#xff0c;它都会缓存一些系统、用户等文件&#xff0c;可能当时能够帮上大忙&#xff0c;能够在操作的时候更快、更便捷&#xff0c;但是…

78、基于STM32单片机步进电机速度调速控制系统设计(程序+原理图+PCB源文件+参考论文+开题报告+流程图+元器件清单等)

摘 要 伴随着时代的快速发展&#xff0c;单片机的应用也越来越广泛&#xff0c;促进了微电子和计算机的快速发展。我们日常生活中步进电机扮演着很重要的角色在我们身边随处可以见。因为步进电机本身的结构组成相对于比较简单、价格也比较便宜廉价。比如压榨机&#xff0c;打印…

【FATE联邦学习】get out put data报错output dir = result[“directory“]KeyError:directory“

报错信息不清不楚的。 经过几个周的排查&#xff0c;有以下原因&#xff1a; 自定义的trainer里面的predict函数没有返回有效的返回值。也有可能是自定义的网络没有使用softmax结尾。&#xff08;若没有&#xff0c;加上即可&#xff09; 应该是二者满足其一就可以。。因为有…

利用spleeter库实现人声和音乐分离(踩过的坑及解决方法)

0&#xff1a;起因 事情的起因是&#xff1a;想用一首歌的伴奏剪视频&#xff0c;但找遍各大平台&#xff0c;都只有原曲&#xff0c;没有伴奏。能找到的进行人声和背景音乐分离的软件都要收费&#xff0c;最后决定用spleeter库&#xff0c;尝试进行音频分离。 1&#xff1a;…

DAY3、DAY4(路飞)

字典 因为key不能为变量 只能为不可变的值 字典的key必须是唯一的 不然后面的值会吧前面的值覆盖 字典取值只能一个一个取 且只能通过key查询value 不能反过来 d.items就是变成了列表里 元祖的形式 这种取值是最推荐的。第三种比第二种推荐的方式 是因为第2种取值会先转…

Redis实战篇(四)

六.秒杀优化 6.1 秒杀优化-异步秒杀思路 之前的下单流程 当用户发起请求&#xff0c;此时会请求nginx&#xff0c;nginx会访问到tomcat&#xff0c;而tomcat中的程序&#xff0c;会进行串行操作&#xff0c;分成如下几个步骤 1、查询优惠卷 2、判断秒杀库存是否足够 3、查…

【NoSQL之 Redis配置】

目录 一、关系数据库与非关系型数据库1、关系型数据库和非关系型数据库区别&#xff08;1&#xff09;数据存储方式不同&#xff08;2&#xff09;扩展方式不同&#xff08;3&#xff09;对事务性的支持不同 2、非关系型数据库产生背景总结 二、Redis简介1、Redis 具有以下几个…

碳排放预测模型 | Python实现基于DT决策树的碳排放预测模型

文章目录 效果一览文章概述研究内容源码设计参考资料效果一览 文章概述 碳排放预测模型 | Python实现基于DT决策树的碳排放预测模型 研究内容 碳排放被认为是全球变暖的最主要原因之一。 该项目旨在提供各国碳排放未来趋势的概述以及未来十年的全球趋势预测。 其方法是分析这些…

迁移Notes最近应用和工作台图标到Nomad Web中

大家好&#xff0c;才是真的好。 今天我们分享一个十分有趣的技术话题&#xff0c;就是将Notes客户机&#xff08;MacOS和Windows&#xff09;上的最近访问应用和工作台图标迁移到Nomad Web中&#xff0c;这样用户就可以在Nomad Web和Notes中获得一致的使用体验。 毕竟Nomad …

maven项目如何引入项目本地jar包

目录 背景操作 背景 由于项目需要&#xff0c;对jar包中的内容进行了一点改变&#xff0c;但是由于不熟悉公司maven仓库发布流程&#xff0c;所以就把jar包放到了项目中&#xff0c;那就需要将本地jar包交给maven管理 操作 在项目中新建目录lib&#xff0c;然后将jar包放在其…

Xilinx ZYNQ系列10款型号IDCODE汇总(2023年7月最新版)

ZYNQ系列产品选型手册&#xff1a;zynq-7000-product-selection-guide /* Zynq Devices. */ #define IDCODE_XC7Z007 0x03723093 #define IDCODE_XC7Z010 0x03722093 #define IDCODE_XC7Z012 0x0373C093 #define IDCODE_XC7Z014 0x03728093 #defi…

Linux学习之服务管理工具systemctl

在CentOS 7中有两种服务集中管理工具&#xff1a; service systemctl /etc/init.d/中放着service的启动脚本。比如network这个脚本里边就有网络服务的启动脚本&#xff0c;cat network | wc -l可以看到这个文件中有264行内容。 /usr/lib/systemd/system下放着systemctl的启动脚…

Redis————主从架构

主从架构搭建 单机多实例 粗制一份redis.conf文件 将相关配置修改为如下值&#xff1a; port 与主节点端口后不相同即可 pidfile pid进程号保存文件pidfile的路径 logfile 日志文件名称 dir 指定数据存放目录 #需要注释掉bind #bind 127.0.0.1&#xff08;bind绑定的是自己机…

Spring Boot 中的 RabbitMQ 的消息接收配置是什么,原理,如何使用

Spring Boot 中的 RabbitMQ 的消息接收配置是什么&#xff0c;原理&#xff0c;如何使用 RabbitMQ 是一个流行的消息队列系统&#xff0c;它可以用于在应用程序之间传递消息。Spring Boot 提供了对 RabbitMQ 的支持&#xff0c;我们可以使用 Spring Boot 中的 RabbitMQ 消息接…