用ChatGPT编写的一个调用ElasticSearch的maven的spring elasticsearch demo案例

以下是一个简单的Maven工程和Spring demo案例,演示如何使用Java调用Elasticsearch。

配置Maven依赖

在pom.xml文件中添加以下依赖:

org.elasticsearch elasticsearch 6.5.4 org.elasticsearch.client transport 6.5.4 org.elasticsearch.client rest 6.5.4

创建Elasticsearch连接

创建一个Elasticsearch连接配置类,用于连接Elasticsearch集群。示例代码如下:

@Configuration
public class ElasticsearchConfig {

private static final String HOST = "localhost";
private static final int PORT = 9300;

@Bean
public RestHighLevelClient restHighLevelClient() {
    RestClientBuilder builder = RestClient.builder(new HttpHost(HOST, PORT));
    RestHighLevelClient client = new RestHighLevelClient(builder);
    return client;
}

}

创建Elasticsearch操作类

创建一个Elasticsearch操作类,用于执行Elasticsearch的操作。示例代码如下:


@Component

public class ElasticsearchService {


private RestHighLevelClient client;

@Autowired
public ElasticsearchService(RestHighLevelClient client) {
    this.client = client;
}

public void createIndex(String indexName) throws IOException {
    CreateIndexRequest request = new CreateIndexRequest(indexName);
    client.indices().create(request, RequestOptions.DEFAULT);
}

public void deleteIndex(String indexName) throws IOException {
    DeleteIndexRequest request = new DeleteIndexRequest(indexName);
    client.indices().delete(request, RequestOptions.DEFAULT);
}

public void insert(String indexName, String id, String jsonString) throws IOException {
    IndexRequest request = new IndexRequest(indexName);
    request.id(id);
    request.source(jsonString, XContentType.JSON);
    IndexResponse response = client.index(request, RequestOptions.DEFAULT);
}

public void update(String indexName, String id, String jsonString) throws IOException {
UpdateRequest request = new UpdateRequest(indexName, id);

        request.doc(jsonString, XContentType.JSON);

        UpdateResponse response = client.update(request, RequestOptions.DEFAULT);

    }


public void delete(String indexName, String id) throws IOException {
    DeleteRequest request = new DeleteRequest(indexName, id);
    DeleteResponse response = client.delete(request, RequestOptions.DEFAULT);
}

public SearchHits search(String indexName, QueryBuilder queryBuilder) throws IOException {
    SearchRequest searchRequest = new SearchRequest(indexName);
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    searchSourceBuilder.query(queryBuilder);
    searchRequest.source(searchSourceBuilder);
    SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);
    SearchHits hits = response.getHits();
    return hits;
}

}


4. 创建Spring Boot控制器

创建一个Spring Boot控制器,在其中调用Elasticsearch操作类执行Elasticsearch操作。示例代码如下:

@RestController

public class ElasticsearchController {


@Autowired
private ElasticsearchService elasticsearchService;

@GetMapping("/createIndex")
public String createIndex() throws IOException {
    elasticsearchService.createIndex("my_index");
    return "Index created successfully";
}

@GetMapping("/deleteIndex")
public String deleteIndex() throws IOException {
    elasticsearchService.deleteIndex("my_index");
    return "Index deleted successfully";
}

@PostMapping("/insert")
public String insert() throws IOException {
    String jsonString = "{\"title\":\"Java Programming\",\"author\":\"John Doe\"}";
    elasticsearchService.insert("my_index", "1", jsonString);
    return "Document inserted successfully";
}

@PostMapping("/update")
public String update() throws IOException {
    String jsonString = "{\"title\":\"Java Programming\",\"author\":\"Jane Doe\"}";
    elasticsearchService.update("my_index", "1", jsonString);
    return "Document updated successfully";
}

@GetMapping("/delete")
public String delete() throws IOException {
    elasticsearchService.delete("my_index", "1");
    return "Document deleted successfully";
}

@GetMapping("/search")
public SearchHits search() throws IOException {
    QueryBuilder queryBuilder = QueryBuilders.matchQuery("title", "Java");
    SearchHits hits = elasticsearchService.search("my_index", queryBuilder);
    return hits;
}

}

以上代码演示了如何创建Elasticsearch连接、执行Elasticsearch

操作,以及在Spring Boot控制器中调用Elasticsearch操作类执行操作。

测试

运行Spring Boot应用程序,并访问以下URL以执行相应的操作:

/createIndex:创建名为“my_index”的索引。

/deleteIndex:删除名为“my_index”的索引。

/insert:向名为“my_index”的索引插入一条文档。

/update:更新名为“my_index”的索引中的文档。

/delete:从名为“my_index”的索引中删除文档。

/search:从名为“my_index”的索引中搜索匹配“Java”的文档。

可以使用Postman或类似的工具进行测试。

以上就是一个基本的Maven工程和Spring demo案例,演示了如何使用Java调用Elasticsearch。这只是一个简单的示例,实际应用中可能需要更复杂和细致的实现。

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

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

相关文章

前端html知识看完这篇博客就够了

文章目录一、 前端二、HTML2.1 HTML概念2.2 HTML结构2.21 标签2.4.1 双标签2.4.2 单标签2.4.3 标签关系2.3 注释2.4 head标签2.4.1 title标签2.4.2 meta标签2.4.2.1 name属性2.4.2.2 http-equiv属性2.4.3 style标签2.4.4 link标签2.4.5 script标签2.4.6 base标签2.5 文本标签2.…

基础IO【Linux】

文章目录:文件相关知识C语言文件IOstdin & stdout & stderr系统文件 IOopenclosewriteread文件描述符文件描述符的分配规则重定向dup2系统调用FILEFILE中的文件描述符FILE中的缓冲区理解文件相关知识 文件 文件内容 文件属性(每一个已经存在的…

python打包成apk界面设计,python打包成安装文件

大家好,给大家分享一下如何将python程序打包成apk文件,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 1、如何用python制作十分秒加减的apk 如何用python制作十分秒加减的apk?用法:. apk包放入apk文件目录,然后输入…

顺序表——“数据结构与算法”

各位CSDN的uu们你们好呀,今天小雅兰的内容是数据结构与算法里面的顺序表啦,在我看来,数据结构总体上是一个抽象的东西,关键还是要多写代码,下面,就让我们进入顺序表的世界吧 线性表 顺序表 线性表 线性表&…

ChatGPT研究分析:GPT-4做了什么

前脚刚研究了一轮GPT3.5,OpenAI很快就升级了GPT-4,整体表现有进一步提升。追赶一下潮流,研究研究GPT-4干了啥。本文内容全部源于对OpenAI公开的技术报告的解读,通篇以PR效果为主,实际内容不多。主要强调的工作&#xf…

基于Vue3和element-plus实现一个完整的登录功能

先看一下最终要实现的效果:登录页面:注册页面:(1)引入element-plus组件库引入组件库的方式有好多种,在这里我就在main.js全局引入了.npm i element-plus -Smain.js中代码:import { createApp } from "vue"; //element-plus import ElementPlus from "element-pl…

Java Web 实战 14 - 计算机网络之初识计算机网络

初识计算机网络一 . 网络发展史二 . 局域网 VS 广域网2.1 交换机与路由器2.2 集线器三 . 网络通信基础3.1 协议3.1.1 OSI 七层模型3.1.2 TCP / IP 五层模型3.2 交换机和路由器的区别3.3 封装和分用大家好 , 这篇文章给大家分享的是计算机网络的一些基础知识 , 我们会给大家分享…

力扣刷题---初始链表1

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯 c语言初阶 🔑个人信条: 🌵知行合一 🍉本篇简介:>:讲解初始数据结构链表的三个力扣题 1.移除链表元素. 2.反转…

计算机网络复习

什么是DHCP和DNS DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的…

购物清单(蓝桥杯C/C++省赛)

目录 1 问题描述 2 文件的读取格式 3 代码实现 1 问题描述 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。 这不,XX大促销又来了!老板…

GPT-4来袭:开启人工智能新时代

文章目录介绍GPT4 模型演示示例示例 1示例 2示例 3示例 4示例 5最后Reference介绍 2023年3月15日,OpenAI公司正式发布了先进的自然语言处理模型GPT-4,前不久发布的GPT-3.5模型只能理解文字的语言模型,而新发布的GPT4则是多模态模型&#xff…

ChatGPT-4震撼发布

3月15日消息,美国当地时间周二,人工智能研究公司OpenAI发布了其下一代大型语言模型GPT-4,这是其支持ChatGPT和新必应等应用程序的最新AI大型语言模型。该公司表示,该模型在许多专业测试中的表现超出了“人类水平”。GPT-4, 相较于…

2022济南大学acm新生赛题解

通过答题情况的难度系数: 签到:ABL 简单:DGKQ 中等:CMN 困难:EFHIJOPRST A-和 算出n个数的和判断正负性即可!!! 发现很多同学的代码错误:要么sum未赋初值&#xf…

借助 Chat GPT 绘制高亮柱状图

简介 最近科研中存在一个小需求:高亮柱状图中的某个柱子,从而展示所提方法的优越性(比如:比较RMSE,精确度等)。这该怎么做呢? 在询问 ChatGPT 和 Bing 搜索后,发现几种解决的办法&…

44岁了,我从没想过在CSDN创作2年,会有这么大收获

1998年上的大学,02年毕业,就算从工作算起,我也有20余年的码龄生涯了。 但正式开启博文的写作,却是2021年开始的,差不多也就写了2年的博客,今天我来说说我在CSDN的感受和收获。 我是真的没想到,…

推荐一款卸载软件的小工具-《UninstallToo》

目录 UninstallToo介绍 UninstallToo下载 UninstallToo使用 总结 UninstallToo介绍 Uninstall Tool 是一款可以用来替代“添加/删除程序”的工具。它允许您显示隐藏的安装程序,按名称过滤已安装程序的列表,强行写在程序,浏览注册表项目&a…

【Linux】进程信号

文章目录一、生活信号二、进程信号三、查看信号kill -l与信号解释man 7 signal四、信号的产生1.按键产生ctrlc——2号信号ctrl\——3号信号2.系统调用kill——向进程发送任意信号raise——进程给自己发送任意信号abort——进程给自己发6号信号3.硬件异常产生信号除零发送8号信号…

双功能螯合剂306776-79-4,DOTA-GA(tBu)4,DOTAGA-四叔丁酯,进行总结说明

基础产品数据:CAS号:306776-79-4中文名:DOTAGA-四叔丁酯英文名:DOTAGA-tetra (t-Bu ester) ,DOTA-GA(tBu)4英文别名:2-[1,4,7,10-Tetraazacyclododec ane-4,7,10-tris(t-bu tyl acetate)]-pe ntanedioic ac…

【JavaEE】初识线程

一、简述进程认识线程之前我们应该去学习一下“进程" 的概念,我们可以把一个运行起来的程序称之为进程,进程的调度,进程的管理是由我们的操作系统来管理的,创建一个进程,操作系统会为每一个进程创建一个 PCB&…

减治法实现插入排序,减治法实现二叉查找树(二叉搜索数,二叉排序数)的创建、插入与查找(含解析与代码实现)

🎊【数据结构与算法】专题正在持续更新中,各种数据结构的创建原理与运用✨,经典算法的解析✨都在这儿,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 -…
最新文章