Spring Boot中使用Spring Data Elasticsearch访问Elasticsearch

news2024/11/25 7:42:27

Spring Boot中使用Spring Data Elasticsearch访问Elasticsearch

Elasticsearch是一个分布式的全文搜索和分析引擎,它可以将海量数据进行快速的查询和聚合。Spring Data Elasticsearch是Spring Data家族中的一个成员,它提供了与Elasticsearch的集成,可以方便地使用Spring框架来访问Elasticsearch。

在本文中,我们将会介绍如何在Spring Boot中使用Spring Data Elasticsearch来访问Elasticsearch。我们将会使用一个简单的示例来说明如何进行配置、索引的创建和数据的查询。代码将会使用Java语言编写,并使用md格式展示。

在这里插入图片描述

环境准备

在开始使用Spring Data Elasticsearch之前,需要准备以下环境:

  • JDK 1.8或以上版本
  • Elasticsearch 6.4或以上版本
  • Spring Boot 2.1或以上版本

添加依赖

首先,我们需要在pom.xml文件中添加Spring Data Elasticsearch的依赖:

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

配置接下来,我们需要在application.properties文件中添加Elasticsearch的配置信息,包括Elasticsearch的地址、端口号和集群名称:

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

定义实体类

在使用Spring Data Elasticsearch时,我们需要定义为每个Elasticsearch的索引创建一个实体类。在实体类中,需要使用注解来指定索引的名称、类型和字段的映射关系。以下是一个简单的示例:

@Document(indexName = "book", type = "novel")
public class Book {
    @Id
    private String id;
    private String name;
    private String author;
    private String description;
    // 省略getter和setter方法
}

在上面的示例中,我们使用@Document注解指定了索引名称为book,类型为novel。使用@Id注解指定了实体类中的id字段为Elasticsearch中文档的唯一标识符。其他字段的映射关系将由Spring Data Elasticsearch自动推断。

创建索引

在使用Elasticsearch之前,我们需要先创建索引。在Spring Data Elasticsearch中,可以使用ElasticsearchTemplate或者ElasticsearchOperations来创建索引。以下是一个使用ElasticsearchTemplate创建索引的示例:

@Autowired
private ElasticsearchTemplate elasticsearchTemplate;

// 创建索引
elasticsearchTemplate.createIndex(Book.class);
// 创建映射
elasticsearchTemplate.putMapping(Book.class);

在上面的示例中,我们首先通过@Autowired注解注入了ElasticsearchTemplate对象,然后调用了createIndexputMapping方法来创建索引和映射。createIndex方法将会根据实体类的注解信息创建索引,而putMapping方法将会根据实体类的注解信息创建映射。

插入数据

在创建索引之后,我们可以使用ElasticsearchTemplate或者ElasticsearchOperations来插入数据。以下是一个使用ElasticsearchTemplate插入数据的示例:

@Autowired
private ElasticsearchTemplate elasticsearchTemplate;

// 创建书籍
Book book = new Book();
book.setId("1");
book.setName("《红楼梦》");
book.setAuthor("曹雪芹");
book.setDescription("一个关于贾宝玉、林黛玉等人物的故事");

// 插入数据
IndexQuery indexQuery = new IndexQueryBuilder()
        .withIndexName("book")
        .withType("novel")
        .withObject(book)
        .build();
String documentId = elasticsearchTemplate.index(indexQuery);

在上面的示例中,我们首先创建了一个Book对象,然后使用IndexQueryBuilder构建器创建了一个IndexQuery对象,指定了索引名称、类型和要插入的数据。最后,使用elasticsearchTemplate对象的index方法将数据插入到Elasticsearch中,并返回文档的唯一标识符。

查询数据

在插入数据之后,我们可以使用ElasticsearchTemplate或者ElasticsearchOperations来查询数据。以下是一个使用ElasticsearchTemplate查询数据的示例:

@Autowired
private ElasticsearchTemplate elasticsearchTemplate;

// 构建查询条件
QueryBuilder queryBuilder = QueryBuilders.matchQuery("name", "红楼梦");

// 查询数据
SearchQuery searchQuery = new NativeSearchQueryBuilder()
        .withQuery(queryBuilder)
        .build();
List<Book> books = elasticsearchTemplate.queryForList(searchQuery, Book.class);

在上面的示例中,我们首先使用QueryBuilder构建器创建了一个查询条件,指定了要查询的字段和查询的关键字。然后,使用NativeSearchQueryBuilder构建器创建了一个SearchQuery对象,指定了要查询的索引和查询条件。最后,使用elasticsearchTemplate对象的queryForList方法执行查询,并将结果转换为Book类型的列表。

总结

本文介绍了如何在Spring Boot中使用Spring Data Elasticsearch来访问Elasticsearch。我们首先添加了Spring Data Elasticsearch的依赖,然后配置了Elasticsearch的地址和端口号。接着,定义了一个Book实体类,并使用注解指定了索引的名称、类型和字段的映射关系。然后,使用ElasticsearchTemplate创建了索引并插入了数据。最后,使用ElasticsearchTemplate查询了数据并将结果转换为Book类型的列表。

Spring Data Elasticsearch提供了丰富的API和工具,可以方便地操作Elasticsearch。在实际开发中,可以根据具体的需求选择适合的API和工具来使用。

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

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

相关文章

一起来学习怎样识别表格文件吧

你有没有经历过手头有一堆纸质表格&#xff0c;但是又不想手动输入数据的烦恼&#xff1f;现在&#xff0c;表格识别计数的出现&#xff0c;可以帮助你轻松解决这个问题。它通过拍照扫描&#xff0c;来自动提取表格中的信息&#xff0c;并将其转化为可编辑的电子文档。那么&…

c# 动态表达式

准备&#xff1a; 创建一个空项目&#xff0c;nuget查找并安装ExpressionEvaluator 示例&#xff1a; using ExpressionEvaluator; using System; 一、计算简单表达式 public string Test1() { return SimpleEval("0.1*(Math.Pow(10,2)20)"); …

AI小作文搞崩科大讯飞股价 科技“魔法”反噬科企

5月24日午后&#xff0c;A股公司科大讯飞的股价突然走出深V造型&#xff0c;闪崩8%。科大讯飞回应称&#xff0c;股价下跌系某生成式AI写作虚假小作文导致&#xff0c;谣传风险为不实消息。 网传的一篇“小作文”谣称“科大讯飞被曝采集用户隐私数据研究人工智能引发争议”&am…

Windows下编写的shell脚本无法在Linux上执行

这通常是由于回车换行符不兼容导致的。 出现无法执行&#xff0c;提示诸如“ 未预期的符号“$\r”附近有语法错误”&#xff0c;“syntax error near unexpected token in”之类的错误&#xff0c;可尝试此文方法。 1.查看shell脚本的换行符格式 vi/vim进入文件&#xff0c;…

2023年湖北建筑起重信号司索工报名流程是什么?个人可以报名吗?

2023年湖北建筑起重信号司索工报名流程是什么&#xff1f;个人可以报名吗&#xff1f; 建筑起重信号司索工是特种作业人员工种即是建设厅特种工。证书全国通用&#xff0c;两年需要年审一次&#xff0c;六年需要换一次证。报考有一定的条件和要求。搜一下启程别就知道啦。 湖北…

【Leetcode】697. 数组的度

[哈希表] Given a non-empty array of non-negative integers nums, the degree of this array is defined as the maximum frequency of any one of its elements. Your task is to find the smallest possible length of a (contiguous) subarray of nums, that has the sa…

20230525下载youtube的字幕的方法

20230525下载youtube的字幕的方法 百度&#xff1a;youtube 字幕 (英语自动生成)下载 【可以直接下载字幕&#xff01;】 https://zhuanlan.zhihu.com/p/349506890?ivk_sa1025883i 下载YouTube油管字幕的2种方法 二&#xff0e;使用在线网站下载YouTube字幕文件 二&#xff0e…

【剧前爆米花--爪哇岛寻宝】TCP保证效率,应对特殊情况等相关机制

作者&#xff1a;困了电视剧 专栏&#xff1a;《JavaEE初阶》 文章分布&#xff1a;这是一篇关于网络编程的文章&#xff0c;在这篇文章中我会着重介绍TCP保证效率&#xff0c;应对特殊情况等相关机制&#xff0c;希望对你有所帮助&#xff01; 目录 效率 批量传输 滑动窗口 …

【九章刷题录】C/C++:数组中重复的数字(JZ3)

精品题解 &#x1f449; 九章刷题录&#x1f448; 猛戳订阅 JZ3 - 数组中重复的数字 &#x1f4dc; 目录&#xff1a; 「 法一 」暴力大法&#xff08;BF&#xff09; 「 法二 」排序 遍历 「 法三 」哈希集合 「 法四 」哈希无序集 「 法五 」原地哈希 「 法六 」Map …

北京筑龙作为软件服务商出席《国企阳光采购标准》研讨会

近日&#xff0c;由中国企业国有产权交易机构协会市场创新专业委员会主办、青岛产权交易所有限公司承办的《国企阳光采购标准》研讨会在青岛召开&#xff0c;该会议共有19家已开展采购业务的各地产权交易机构参加&#xff0c;北京筑龙作为软件服务商出席会议。 《国企阳光采购标…

【Linux】线程同步

文章目录 条件变量相关函数初始化条件变量-pthread_cond_init销毁条件变量-pthread_cond_destroy等待条件变量-pthread_cond_wait唤醒等待条件变量pthread_cond_broadcastpthread_cond_signal 小例子关于等待函数的补充条件变量使用规范 条件变量相关函数 初始化条件变量-pthr…

多台linux设备之间设置免密登陆

1、首先&#xff0c;先搞一个公钥&#xff0c;如果已经有公钥了&#xff0c;请自行跳过 我这是有了&#xff0c;如果没有&#xff0c;也没关系&#xff0c;造一个就好&#xff0c;命令为&#xff1a; ssh-keygen -t rsa 一路回车就行&#xff0c;看下执行结果&#xff1a; 2、…

使用AWTK实现汽车仪表Cluster/DashBoard嵌入式开发概述

AWTK=Toolkit AnyWhere,一款国产免费开源工具,ZLG开发的开源GUI引擎,为嵌入式等系统提供图形界面开发IDE。 随着汽车技术的发展,汽车仪表盘也在快速发展,从最初的机械式到电气式,再到数字化。这次电动化、智能化又一次让汽车仪表出现了飞跃式的发展,再未来,仪表板上可…

【vsomeip】vsomeip安装与入门案例

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍vsomeip的使用。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习知识&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不迷路&am…

luatOS网站 lua语言学习 练习题

lua 教程跳转链接&#xff0c;练习题都来自这里 逻辑运算 检验大小&#xff08;自测题&#xff09; 题目&#xff1a;如果已知number变量n&#xff0c;那么如果需要判断n是否符合下面的条件&#xff1a; 3<n≤10 以下四行判断代码&#xff0c;正确的是&#xff1f; &a…

【C++】运算符重载(日期类的实现)

【C】运算符重载&#xff08;日期类的实现&#xff09; 前言运算符重载operator全局和类中 日期类的实现成员变量的确定构造函数拷贝构造 运算符重载部分的重载思路实现GETmonthdayoperator 的重载思路实现 -的与-的重载实现 各个比较运算符的重载实现 前置与后置实现 &#xf…

接口自动化【六】——接口关联之jsonpath提取+设置全局变量+通用封装

文章目录 前言一、jsonpath提取二、jsonpath与excel当中提取表达式结合三、类的动态属性设置四、设置全局变量&#xff08;这个模块就作为一个讲解&#xff09;五、new_handle_global_data.py六、new_handle_extract.py七、test_new_upload_image.py 文件中上传图片的代码更改八…

mybatis 在当前项目中的实际应用及自定义分页的实现

mybatis 在当前项目中的实际应用及自定义分页的实现 项目中分页代码的解耦 实现目标 实现目标&#xff0c;使用spring 提供的分页相关的类&#xff0c;避免代码中直接使用PageHelper 具体实现 创建自定义PageHelper&#xff0c;并使用spring-data-common提供的具体实现类操…

OTA升级技术概览

随着物联网技术的不断发展&#xff0c;越来越多的设备和系统需要进行远程升级以保持其安全性和功能性。OTA&#xff08;Over-the-Air&#xff09;升级技术是一种通过无线网络远程升级固件或软件的方法&#xff0c;已经成为现代工业、智能家居、汽车等领域中广泛应用的技术。本文…

欧拉公式——最令人着迷的公式之一

欧拉公式是数学里最令人着迷的公式之一&#xff0c;它将数学里最重要的几个常数联系到了一起&#xff1a;两个超越数&#xff1a;自然对数的底e&#xff0c;圆周率π&#xff1b;两个单位&#xff1a;虚数单位i和自然数的单位1&#xff0c;以及数学里常见的0。 ​而且它对数学领…