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

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.hqwc.cn/news/2723.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Red Hat宣布限制访问源代码,尚有两种方式可获取

日前Red Hat宣布限制访问Red Hat Enterprise Linux(RHEL)源代码&#xff0c;而此举也将影响AlmaLinux 、Rocky Linux 等下游发行版。 随即Rocky Linux发布了名为《Keeping Open Source Open》的博文。文中是这样说的&#xff1a;    Red Hat的**ERP**服务条款 (TOS) 和最终…

驱动开发:内核读写内存多级偏移

让我们继续在《内核读写内存浮点数》的基础之上做一个简单的延申&#xff0c;如何实现多级偏移读写&#xff0c;其实很简单&#xff0c;读写函数无需改变&#xff0c;只是在读写之前提前做好计算工作&#xff0c;以此来得到一个内存偏移值&#xff0c;并通过调用内存写入原函数…

SpringBoot的日志

SpringBoot的日志 &#x1f50e;日志是什么&#x1f50e;日志的作用&#x1f50e;日志级别日志级别的作用日志级别的分类日志级别的设置 &#x1f50e;打印日志打印日志具体内容划分 &#x1f50e;常用的日志框架为什么这样设计对比System.out.ptintln()与日志框架 &#x1f50…

Observability:如何把 Elastic Agent 采集的数据输入到 Logstash 并最终写入到 Elasticsearch

在之前的文章 “安装独立的 Elastic Agents 并采集数据 - Elastic Stack 8.0”&#xff0c;我们详述了如何使用 No Fleet Server 来把数据写入到 Elasticsearch 中。在今天的文章中&#xff0c;我们来详述如下使用 Elastic Agents 在独立&#xff08;standalone&#xff09;模式…

《诸神之眼:Nmap网络安全审计技术揭秘》读书笔记

《诸神之眼&#xff1a;Nmap网络安全审计技术揭秘》读书笔记 作者&#xff1a;李华峰 ◆ 前言 NSE是Nmap中革命性的创新。通过Nmap强大的脚本引擎&#xff08;NSE&#xff09;&#xff0c;每一个用户都可以向Nmap中添加自己编写的代码&#xff0c;从而将Nmap打造成用户自由定制…

fusionpbx简介

概述 fusionpbx是以freeswitch作为底层框架开发而成的开源PBX&#xff0c;在freeswitch的基础上&#xff0c;优化了GUI的易用性。 fusionpbx可用作高可用性的单租户或基于域的多租户 PBX、运营商级交换机、呼叫中心服务器、传真服务器、voip服务器、语音邮件服务器、会议服务…

深入理解深度学习——BERT派生模型:T5(Text to Text Transfer Transformer)

分类目录&#xff1a;《深入理解深度学习》总目录 T5的全称为Text to Text Transfer Transformer&#xff0c;是谷歌提出的预训练语言模型领域的通用模型&#xff0c;该模型将所有自然语言问题都转化成文本到文本的形式&#xff0c;并用一个统一的模型解决。为了得到大一统的高…

hexo stellar设置笔记页面

stellar主题的作者在其文档介绍了如何进行笔记页面的简单设置&#xff0c;但是我看了以后还是有点云里雾里&#xff0c;在一顿查阅资料以后&#xff0c;我终于找到了解决办法。 参考下面这个博主的文章。写得很详细&#xff0c;这里就不再赘述啦。 Stellar主题自定义侧边栏教…

C#,保持亮度的动态直方图均衡化(Brightness Preserving Dynamic Histogram Equalization:BPDHE)源代码

图像增强的主要目的是显示隐藏的图像细节&#xff0c;或者用新的动态范围增加图像对比度。直方图均衡&#xff08;HE&#xff09;是用于图像对比度增强的最流行的技术之一&#xff0c;因为HE在计算上快速且易于实现。HE通过基于输入灰度级的概率分布重新映射图像的灰度级来执行…

微服务远程调用openFeign整合

✅作者简介&#xff1a;大家好&#xff0c;我是Cisyam&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Cisyam-Shark的博客 &#x1f49e;当前专栏&#xff1a; 微服务探索之旅 ✨特色专…

聚类分析(文末送书)

目录 聚类分析是什么 一、 定义和数据类型 聚类应用 聚类分析方法的性能指标 聚类分析中常用数据结构有数据矩阵和相异度矩阵 聚类分析方法分类 二、K-means聚类算法 划分聚类方法对数据集进行聚类时包含三个要点 K-Means算法流程: K-means聚类算法的特点 三、k-med…

【数据挖掘】时间序列模型处理指南(二)

一、说明 本文是一个系列文章的第二部分&#xff0c;本文将用股票数据进行时间序列分析为例&#xff0c;对时间分析的方法、过程&#xff0c;进行详细阐述。 二、前文章节 在文章第一部分种&#xff1a;【数据挖掘】时间序列模型处理&#xff08;一&#xff09;_无水先生的博客…