Spring Boot 集成 Elasticsearch 实战

这篇具有很好参考价值的文章主要介绍了Spring Boot 集成 Elasticsearch 实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

@Configuration

public class ElasticsearchConfiguration {

@Value(“${elasticsearch.host}”)

private String host;

@Value(“${elasticsearch.port}”)

private int port;

@Value(“${elasticsearch.connTimeout}”)

private int connTimeout;

@Value(“${elasticsearch.socketTimeout}”)

private int socketTimeout;

@Value(“${elasticsearch.connectionRequestTimeout}”)

private int connectionRequestTimeout;

@Bean(destroyMethod = “close”, name = “client”)

public RestHighLevelClient initRestClient() {

RestClientBuilder builder = RestClient.builder(new HttpHost(host, port))

.setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder

.setConnectTimeout(connTimeout)

.setSocketTimeout(socketTimeout)

.setConnectionRequestTimeout(connectionRequestTimeout));

return new RestHighLevelClient(builder);

}

}

定义文档实体类

首先在 constant 包下定义常量接口,在接口中定义索引的名字为 user :

public interface Constant {

String INDEX = “user”;

}

然后在 document 包下创建一个文档实体类:

public class UserDocument {

private String id;

private String name;

private String sex;

private Integer age;

private String city;

// 省略 getter/setter

}

ES 基本操作

在这里主要介绍 ES 的索引、文档、搜索相关的简单操作,在 service 包下创建 UserService类。

索引操作

在这里演示创建索引和删除索引:

创建索引

在创建索引的时候可以在 CreateIndexRequest 中设置索引名称、分片数、副本数以及 mappings,在这里索引名称为 user ,分片数 number_of_shards 为 1,副本数 number_of_replicas 为 0,具体代码如下所示:

public boolean createUserIndex(String index) throws IOException {

CreateIndexRequest createIndexRequest = new CreateIndexRequest(index);

createIndexRequest.settings(Settings.builder()

.put(“index.number_of_shards”, 1)

.put(“index.number_of_replicas”, 0)

);

createIndexRequest.mapping(“{\n” +

" “properties”: {\n" +

" “city”: {\n" +

" “type”: “keyword”\n" +

" },\n" +

" “sex”: {\n" +

" “type”: “keyword”\n" +

" },\n" +

" “name”: {\n" +

" “type”: “keyword”\n" +

" },\n" +

" “id”: {\n" +

" “type”: “keyword”\n" +

" },\n" +

" “age”: {\n" +

" “type”: “integer”\n" +

" }\n" +

" }\n" +

“}”, XContentType.JSON);

CreateIndexResponse createIndexResponse = client.indices().create(createIndexRequest, RequestOptions.DEFAULT);

return createIndexResponse.isAcknowledged();

}

通过调用该方法,就可以创建一个索引 user ,索引信息如下:

Spring Boot 集成 Elasticsearch 实战,程序员,spring boot,elasticsearch,jenkins

关于 ES 的 Mapping 可以看下这篇文章: 一文搞懂 Elasticsearch 之 Mapping

删除索引

在 DeleteIndexRequest 中传入索引名称就可以删除索引,具体代码如下所示:

public Boolean deleteUserIndex(String index) throws IOException {

DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest(index);

AcknowledgedResponse deleteIndexResponse = client.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);

return deleteIndexResponse.isAcknowledged();

}

介绍完索引的基本操作,下面介绍文档的相关操作:

文档操作

在这里演示下创建文档、批量创建文档、查看文档、更新文档以及删除文档:

创建文档

创建文档的时候需要在 IndexRequest 中指定索引名称, id 如果不传的话会由 ES 自动生成,然后传入 source,具体代码如下:

public Boolean createUserDocument(UserDocument document) throws Exception {

UUID uuid = UUID.randomUUID();

document.setId(uuid.toString());

IndexRequest indexRequest = new IndexRequest(Constant.INDEX)

.id(document.getId())

.source(JSON.toJSONString(document), XContentType.JSON);

IndexResponse indexResponse = client.index(indexRequest, RequestOptions.DEFAULT);

return indexResponse.status().equals(RestStatus.OK);

}

下面通过调用这个方法,创建两个文档,具体内容如下:

Spring Boot 集成 Elasticsearch 实战,程序员,spring boot,elasticsearch,jenkins

批量创建文档

在一个 REST 请求中,重新建立网络开销是十分损耗性能的,因此 ES 提供 Bulk API, 支持在一次 API 调用中,对不同的索引进行操作 ,从而减少网络传输开销,提升写入速率。

下面方法是批量创建文档,一个 BulkRequest 里可以添加多个 Request,具体代码如下:

public Boolean bulkCreateUserDocument(List documents) throws IOException {

BulkRequest bulkRequest = new BulkRequest();

for (UserDocument document : documents) {

String id = UUID.randomUUID().toString();

document.setId(id);

IndexRequest indexRequest = new IndexRequest(Constant.INDEX)

.id(id)

.source(JSON.toJSONString(document), XContentType.JSON);

bulkRequest.add(indexRequest);

}

BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);

return bulkResponse.status().equals(RestStatus.OK);

}

下面通过该方法创建些文档,便于下面的搜索演示。

查看文档

查看文档需要在 GetRequest 中传入索引名称和文档 id,具体代码如下所示:

public UserDocument getUserDocument(String id) throws IOException {

GetRequest getRequest = new GetRequest(Constant.INDEX, id);

GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);

UserDocument result = new UserDocument();

if (getResponse.isExists()) {

String sourceAsString = getResponse.getSourceAsString();

result = JSON.parseObject(sourceAsString, UserDocument.class);

} else {

logger.error(“没有找到该 id 的文档”);

}

return result;

}

下面传入文档 id 调用该方法,结果如下所示:

Spring Boot 集成 Elasticsearch 实战,程序员,spring boot,elasticsearch,jenkins

更新文档

更新文档则是先给 UpdateRequest 传入索引名称和文档 id,然后通过传入新的 doc 来进行更新,具体代码如下:

public Boolean updateUserDocument(UserDocument document) throws Exception {

UserDocument resultDocument = getUserDocument(document.getId());

UpdateRequest updateRequest = new UpdateRequest(Constant.INDEX, resultDocument.getId());

updateRequest.doc(JSON.toJSONString(document), XContentType.JSON);

UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);

return updateResponse.status().equals(RestStatus.OK);

}

下面将文档 id 为 9b8d9897-3352-4ef3-9636-afc6fce43b20 的文档的城市信息改为 handan ,调用方法结果如下:

Spring Boot 集成 Elasticsearch 实战,程序员,spring boot,elasticsearch,jenkins
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。Spring Boot 集成 Elasticsearch 实战,程序员,spring boot,elasticsearch,jenkins

Spring Boot 集成 Elasticsearch 实战,程序员,spring boot,elasticsearch,jenkins

Spring Boot 集成 Elasticsearch 实战,程序员,spring boot,elasticsearch,jenkins

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

Spring Boot 集成 Elasticsearch 实战,程序员,spring boot,elasticsearch,jenkins

总结

大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。

麻烦帮忙转发一下这篇文章+关注我

Spring Boot 集成 Elasticsearch 实战,程序员,spring boot,elasticsearch,jenkins

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
可以扫码获取!!(备注Java获取)**

Spring Boot 集成 Elasticsearch 实战,程序员,spring boot,elasticsearch,jenkins

总结

大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。

麻烦帮忙转发一下这篇文章+关注我

[外链图片转存中…(img-daf5pebx-1711815434669)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!文章来源地址https://www.toymoban.com/news/detail-846035.html

到了这里,关于Spring Boot 集成 Elasticsearch 实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《Spring Boot 实战派》--13.集成NoSQL数据库,实现Elasticsearch和Solr搜索引擎

             关于搜索引擎 我们很难实现 Elasticseach 和 Solr两大搜索框架的效果;所以本章针对两大搜索框架,非常详细地讲解 它们的原理和具体使用方法, 首先 介绍什么是搜索引擎 、如何用 MySQL实现简单的搜索引擎,以及Elasticseach 的 概念和接口类; 然后介绍Elasticseach

    2023年04月09日
    浏览(91)
  • 黑马程序员--分布式搜索ElasticSearch学习笔记

    黑马视频地址:https://www.bilibili.com/video/BV1LQ4y127n4/ 想获得最佳的阅读体验,请移步至我的个人博客 SpringCloud学习笔记 消息队列MQ学习笔记 Docker学习笔记 分布式搜索ElasticSearch学习笔记 ElasticSearch的作用 ElasticSearch 是一款非常强大的开源搜素引擎,具备非常强大的功能,可以帮

    2024年02月04日
    浏览(49)
  • 10、全文检索 -- Elasticsearch -- 介绍、下载,42岁程序员面试

    目录 全文检索 – Elasticsearch – 介绍、下载、安装、配置、开启安全机制、设置用户密码、为 Elasticsearch 启用 SSL 和 HTTPS 支持 Elasticsearch 介绍 官网下载 Elasticsearch 安装 Elasticsearch 1、bin 目录介绍 2、配置环境变量 3、修改配置文件 4、启动 Elasticsearch 5、查看 Elasticsearch 启动结果

    2024年04月26日
    浏览(49)
  • 【黑马程序员】C++核心功能项目实战

    20240221 本教程主要利用C++来实现一个基于多态的职工管理系统 构成 普通员工 经理 老板 员工显示 需要显示职工编号、职工姓名、职工岗位以及职责 不同员工职责 责普通员工职责:完成经理交给的任务 经理职责:完成老板交给的任务,并下发任务给员工 老板职责:管理公司所有

    2024年02月22日
    浏览(47)
  • Python黑马程序员(Spark实战)笔记

     pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspark 注意:字符串返回的是[\\\'a\\\',\\\'b\\\',\\\'c\\\',\\\'d\\\',\\\'e\\\',\\\'f\\\',\\\'g\\\']   字典返回的是[\\\'key1\\\',\\\'key2\\\']   读取hello.txt的内容: 注意: 如果没有添加上行代码程序会报出错误! Caused by: org.apache.spark.SparkException: Python worker failed to connect back.  解释器的位置

    2024年02月05日
    浏览(87)
  • 《黑马程序员2023新版黑马程序员大数据入门到实战教程,大数据开发必会的Hadoop、Hive,云平台实战项目》学习笔记总目录

    本文是对《黑马程序员新版大数据入门到实战教程》所有知识点的笔记进行总结分类。 学习视频:黑马程序员新版大数据 学习时总结的学习笔记以及思维导图会在后续更新,请敬请期待。 前言:配置三台虚拟机,为集群做准备(该篇章请到原视频进行观看,不在文章内详细

    2024年02月03日
    浏览(70)
  • 推荐一个免费的集成ChatGPT的代码编辑器,程序员写代码将被颠覆

    上周, Open AI 团队正式宣布: GPT-4 来了! GPT-4 的出现,随后 Microsoft 的多个产品就集成了 GPT-4 。紧接着基于 Open AI 公司发布的 GPT-4 编写、编辑和讨论代码新一代编辑器 Cursor 的出现。 Cursor是一款独立的应用。从界面来看,很简陋。但它强大的功能是可以更加智能的辅助编程

    2023年04月09日
    浏览(67)
  • GPT引领学习之旅:适应不同级别程序员的Elasticsearch学习案例

    在本文中,我们将为初级、中级和高级程序员分别提供一个Elasticsearch学习案例,展示如何利用GPT进行针对性学习。 假设您是一名初级程序员,想要在自己的个人博客中集成Elasticsearch搜索引擎,以下是学习和实践的过程: 学习目标:了解Elasticsearch基本概念、安装配置、数据

    2023年04月24日
    浏览(57)
  • GPT引领学习之旅:弥补信息差,助力程序员高效掌握Elasticsearch

    Elasticsearch作为一款流行的开源搜索和分析引擎,持续迅速发展,随着版本的更新,功能和特性也在不断变化。GPT虽然具备大量的计算机科学、编程语言和工具相关的知识,但其知识截止于2021年。为了弥补GPT与实际情况之间的信息差,我们可以采取以下策略,将GPT与实际情况

    2024年02月02日
    浏览(118)
  • Android相机开发实战,Android程序员必看

    由于需求不同,所以选择的方案固然也不同,至于第二种调用系统相机,这里就不过多讲解了,使用Intent对象设置一个Action动作即可,跳转时使用startActivityForResult,然后在onActivityResult处理相关数据便可,关键代码: intent.setAction(“android.media.action.STILL_IMAGE_CAMERA”); 至于使用

    2024年04月15日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包