Elasticsearch8.x Spring Data and Spring Boot 3 尝鲜

在本教程中,我们将通过实际操作和实用的方式,探索使用 Spring Boot 进行 Elasticsearch 的基础知识。我们将学习如何使用 Spring Data Elasticsearch 模块创建索引、进行 CRUD 操作、搜索和查询 Elasticsearch 文档。我们还将看看如何在我们的 Spring 应用程序中记录 Elasticsearch 的请求和响应数据。

1. 介绍

Elasticsearch 是一个强大且广泛使用的开源搜索和分析引擎,基于 Lucene。它设计用于快速和近实时地存储、搜索和分析大量数据。

以下是 Elasticsearch 的一些关键功能:

  • 全文搜索: Elasticsearch 在全文搜索方面表现出色。它能够高效地索引和搜索大量非结构化或半结构化文本数据。

  • JSON 文档: Elasticsearch 中的数据以 JSON 文档的形式存储。每个文档存储在一个索引中,概念上类似于关系型数据库中的表。这使得 Elasticsearch 是无模式的,可以在没有预定义结构的情况下索引和搜索数据。

  • 查询: Elasticsearch 提供了丰富而灵活的查询语言,使我们能够执行从简单到复杂的搜索。我们可以使用各种查询类型(如术语查询、匹配查询、范围查询等)来过滤、聚合和排序数据。

  • 分析器和分词器: Elasticsearch 包含强大的文本分析功能,如分析器和分词器,可以将文本分解为令牌以实现高效的搜索和索引。它支持多种语言和自定义分析器。

2. Elasticsearch 环境搭建

参考第一篇文章

3. 创建项目和配置elasticsearch

3.1. Maven

添加spring-boot-starter-data-elasticsearch

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

3.2. Elasticsearch ClientConfiguration

Spring Data Elasticsearch 依赖于一个 Elasticsearch 客户端(由 Elasticsearch 客户端库提供),该客户端可以连接到单个 Elasticsearch 节点或集群。

Elasticsearch 客户端配置.

@Configuration
public class ImperativeElasticsearchConfig extends ElasticsearchConfiguration {
   
    @Override
    public ClientConfiguration clientConfiguration() {
   
        return ClientConfiguration.builder()
                .connectedTo("192.168.163.13:9200")
                .withBasicAuth("elastic", "123456")
                .build();
    }
}

在上述配置之后,我们可以将以下 bean 注入到其他 Spring 组件中:

import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import org.elasticsearch.client.RestClient;

@Autowired
ElasticsearchOperations operations;

@Autowired
ElasticsearchClient elasticsearchClient;

@Autowired
RestClient restClient;         

注意: 我们应该使用 ElasticsearchOperations来与 Elasticsearch 集群交互。

当我们使用repositories时,底层使用的也是ElasticsearchOperations。

4. Document 相关的注解

Spring Data Elasticsearch 支持使用 Java 类作为可以映射到 Elasticsearch 文档的实体。这些类使用 @Document 注解,其字段使用 @Field 注解来映射到 Elasticsearch 字段。

在我们的演示中,我们将创建一个 Employee ,该doc具有诸如name和salary等属性,如下所示:

@Data
@Document(indexName = "employees", createIndex = true)
public class Employee {

    @Id
    private String employeeId;

    @Field(type = FieldType.Text, name = "name")
    private String name;

    @Field(type = FieldType.Long, name = "salary")
    private long salary;
    
    // setters and getters
}

现在,解释这些注解:

  • @Document – 应用在类级别,表示这个类是索引的mapping。

    • indexName – 存储此实体的索引名称。
    • createIndex标志决定是否在仓库引导时创建索引。默认值为 true。
  • @Id – 应用在字段级别,标记字段作为主键。

  • @Field – 应用在字段级别,定义字段的属性,如名称、类型、格式等。

5. Spring Data Elasticsearch APIs 分类说明

Spring Data Elasticsearch 提供了方便的抽象和模板,用于与 Elasticsearch 进行交互。它提供了高级抽象和数据访问方法,使我们无需直接处理底层 API。

  • ElasticsearchOperations (推荐)

    包含常见的辅助函数,其他方法已经被 移动到ElasticsearchOperations扩展的不同接口中。这些接口现在反映了 Elasticsearch 的 REST API 结构。

    • DocumentOperations 包含与保存或删除相关的函数。
    • SearchOperations 包含在 Elasticsearch 中进行搜索的函数。
    • IndexOperations 定义了在索引上操作的函数,如索引创建或映射创建。
  • ElasticsearchRepository: 是一个扩展了标准 Spring Data CrudRepository 的仓库接口。我们可以通过定义自定义方法和查询来创建自定义仓库。

  • ElasticsearchTemplate: 是一个高级 API,提供了各种与 Elasticsearch 交互的方法。它允许我们执行索引、查询和文档操作。

在后续部分,我们将深入探讨如何使用这些 API 的详细内容。

6. 使用 ElasticsearchOperations

完成必要的客户端配置后,我们可以将 ElasticsearchOperations bean 自动装配到服务类中,并使用其方法执行 CRUD 操作。

@Autowired private ElasticsearchOperations elasticsearchOperations;

5.1. 对doc的增删改查

我们可以使用传统的 save()get()delete() 方法来执行针对 Elasticsearch 文档的操作。

  • save() 操作具有 保存或更新语义
  • get() 方法从 Elasticsearch 索引中检索文档。要检索所需的文档,必须提供主键。
  • delete() 方法允许从索引中删除文档。
Employee employee = new Employee(

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电子部件烧录流程(仅供参考)

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 部件烧录流程的详细步骤 1. 准备工作 2. 连接硬件 3. 配置烧录软件 4. 校验和设置 5. 开始烧录 6. 验证和测试 7. 断开…

吉利银河L6 AQS空气质量监控系统

结论 顶配才有AQS 开启空调且auto模式 则默认开启AQS 无法关闭AQS AQS的作用 银河L6 AQS触发 和 图标 AQS官方配置参数 官方文档 吉利用户手册

机器学习基础概念

1.机器学习定义 2.机器学习工作流程 &#xff08;1&#xff09;数据集 ①一行数据&#xff1a;一个样本 ②一列数据&#xff1a;一个特征 ③目标值&#xff08;标签值&#xff09;&#xff1a;有些数据集有目标值&#xff0c;有些数据集没有。因此数据类型由特征值目标值构成或…

数据结构与算法笔记:实战篇 - 剖析微服务接口鉴权限流背后的数据结构和算法

概述 微服务是最近几年才兴起的概念。简单点将&#xff0c;就是把复杂的大应用&#xff0c;解耦成几个小的应用 。这样做的好处有很多。比如&#xff0c;这样有利于团队组织架构的拆分&#xff0c;比较团队越大协作的难度越大&#xff1b;再比如&#xff0c;每个应用都可以独立…

程序算法设计分析

动态规划和分治、贪心相比有什么区别&#xff1f;各自的优缺点&#xff1f; 分治算法特征&#xff1a; 1&#xff09;规模如果很小&#xff0c;则很容易解决。//一般问题都能满足 2&#xff09;大问题可以分为若干规模小的相同问题。//前提 3&#xff09;利用子问题的解&#x…

最靓丽的C++开源通知弹框SnoreToasts自动监听软件及网页通知

SnoreToasts&#xff0c;作为一款轻量级的C开源项目&#xff0c;为开发者提供了一个便捷的方式来在Windows操作系统上展示通知弹框&#xff08;Toast Notifications&#xff09;。 特点与优势 轻量级&#xff1a;SnoreToasts采用了简洁的代码设计&#xff0c;避免了不必要的依…

苹果可能与谷歌大模型合作,马斯克xAI下个月推出Grok-2,比尔·盖茨:Scaling Law快要走到尽头

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 1、苹果被曝 Gemini 模型今秋或融入苹果智能生态系统 苹果知名爆料人马克古尔曼&#xff08;Mark Gurman&#xff09;最新透露&#xff0c;苹果公司将于今年秋季宣布与Alphabet旗下的谷歌的大模型Gem…

电流传感器技术详解,你都懂吗?

在任何过程中&#xff0c;电量的测量对于监控、分析和控制系统都是必不可少的。要执行这些类型的测量&#xff0c;必须使用电流传感器。除非可以测量&#xff0c;否则无法管理物理量。让我们深入了解电流传感器的行为。 电流传感器 电流传感器是将电流信号转换为另一个可分析…

PyTorch计算机视觉实战:目标检测、图像处理与深度学习

本书基于真实数据集&#xff0c;全面系统地阐述现代计算机视觉实用技术、方法和实践&#xff0c;涵盖50多个计算机视觉问题。全书分为四部分&#xff1a;一部分介绍神经网络和PyTorch的基础知识&#xff0c;以及如何使用PyTorch构建并训练神经网络&#xff0c;包括输入数据缩放…

从零到一:全面掌握模板机部署与虚拟机克隆的实训指南【实训Day01】

一、模板机的部署 1.设置好子网ip和子网掩码以及网关 保证有NAT模式 子网IP着重记住前三段&#xff1a;192.168.222.xxx 2.开始建立虚拟机 注意&#xff1a;路径中不要有中文 3.安排8个内核 4.安排2GB内存 创建初步成功&#xff0c;接着 5.开启此虚拟机 6.选择中文 7.日期&…

好展位,抢先订!2024年亚洲(泰国) 国际电力能源展

2024年亚洲&#xff08;泰国&#xff09; 国际电力能源展 Powerex Asia & Electric Asia 2024 ▏发电设备 ▏输配电 ▏电网 ▏太阳能光伏 ▏储能 ▏氢能 ▏生物能源 ▏风能 ▏智慧能源 ▏ 能源部官方批复亚洲重点电力及新能源展 展会时间&#xff1a;2024 年 10 月 16-…

R可视化数据必要格式——长格式

一、引言 我们在对数据进行可视化时遇到最头疼、最常见的问题是什么&#xff1f;数据问题。 因为我们往往不会从零自己编程进行可视化&#xff0c;往往是现有模板或积累&#xff0c;而正确的数据格式对应正确的图形包要求&#xff0c;一定会正确出图&#xff0c;所以只有一个问…

鸿蒙开发设备管理:【@ohos.settings (设置数据项名称)】

设置数据项名称 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 本模块提供设置数据项的访问功能相关接口的说明及示例。 导入模块 import settings from ohos.settings;settings.getUri…

Pointnet++改进即插即用系列:全网首发GLSA聚合和表示全局和局部空间特征|即插即用,提升特征提取模块性能

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入GLSA,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步骤三 1.理论介…

Java中==和equals()的区别

Java中和equals&#xff08;&#xff09;的区别 1、操作符2、equals()方法3、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java中&#xff0c;和equals()是两个常用的比较操作符和方法&#xff0c;但它们之间的用法和含义却有着本…

GPT-5即将登场:AI赋能下的未来工作与日常生活新图景

随着OpenAI首席技术官米拉穆拉蒂在近期采访中的明确表态&#xff0c;GPT-5的发布已不再是遥不可及的梦想&#xff0c;而是即将在一年半后与我们见面的现实。这一消息无疑在科技界乃至全社会引发了广泛关注和热烈讨论。从GPT-4到GPT-5的飞跃&#xff0c;被形容为从高中生到博士生…

03.C1W2.Sentiment Analysis with Naïve Bayes

目录 Probability and Bayes’ RuleIntroductionProbabilitiesProbability of the intersection Bayes’ RuleConditional ProbabilitiesBayes’ RuleQuiz: Bayes’ Rule Applied Nave Bayes IntroductionNave Bayes for Sentiment Analysis P ( w i ∣ c l a s s ) P(w_i|clas…

【笔记】太久不用redis忘记怎么后台登陆了

&#xff01;首先启动虚拟机linux的centos7 2.启动finalshell 我的redis启动在根目录用 redis-server redis.conf --启动 systemctl status redis --查看redis状态 是否active redis-cli -h centos的ip地址 -p 你要用的redis端口号&#xff08;默认为6379&#xff09; -a 你…

JavaSE阶段面试题(一)

目录 1.int a 1, int b 1, Integer c 1, Integer d 1&#xff1b;四个区别和联系&#xff0c;以及c和d是同一个吗&#xff1f; 2.为什么重写HashCode必须重写euqals&#xff0c;两者之间的关系&#xff1f; 3.创建对象的方式有哪些 4.重写和重载的区别 5.抽象类和接口…

firewalld(6)自定义services、ipset

简介 在前面的文章中我们已经介绍了zone、rich rule 、--direct等功能和基本配置。在前面文章中&#xff0c;我们提到过firewalld内置了很多服务&#xff0c;可以通过firewall-cmd --get-services来查看服务&#xff0c;也可以通过配置文件查看这些服务/var/lib/firewalld/ser…
最新文章