RestClient操作索引库和文档

2024-06-20 01:04

本文主要是介绍RestClient操作索引库和文档,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

导入依赖:

        <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.12.1</version></dependency>

导入依赖成功之后就可以开始我们的测试了!!!

RestClient操作索引库

创建RestClient

在测试方法中进行测试,首先我们需要创建一个RestHighLevelClient,使用@BeforeEach注解进行create,使用@AfterEach关闭链接。然后我们打印client

 	private RestHighLevelClient client;/*** BeforeEach注解是指,在执行其他测试方法之前,必须先执行一次该方法*/@BeforeEachvoid setUp() {client = new RestHighLevelClient(RestClient.builder(HttpHost.create("http://公网ip:9200")));}/*** AfterEach注解是指,在执行其他测试方法之后,必须先执行一次该方法*/@AfterEachvoid tearDown() throws IOException {client.close();}

在这里插入图片描述

新增索引库

  1. 创建Request对象
  2. 准备请求的参数:DSL语句
  3. 发生请求
    @Testvoid createHotelIndex() throws IOException {// 1. 创建Request对象CreateIndexRequest request = new CreateIndexRequest("user");// 2. 准备请求的参数:DSL语句request.source("{\n" +"  \"mappings\": {\n" +"    \"properties\": {\n" +"      \"id\": {\n" +"        \"type\": \"keyword\"\n" +"      },\n" +"      \"name\": {\n" +"        \"type\": \"text\",\n" +"        \"analyzer\": \"ik_max_word\"\n" +"      }\n" +"    }\n" +"  }\n" +"}", XContentType.JSON);// 3. 发生请求client.indices().create(request, RequestOptions.DEFAULT);}

运行成功后我们回到Dev Tools查询

GET /usr

在这里插入图片描述

删除和查看索引库

    @Testvoid deleteHotelIndex() throws IOException {DeleteIndexRequest request = new DeleteIndexRequest("user");client.indices().delete(request, RequestOptions.DEFAULT);}@Testvoid existsHotelIndex() throws IOException {GetIndexRequest request = new GetIndexRequest("user");boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);System.out.println(exists ? "索引库已经存在" : "索引库不存在");}

RestClient操作文档

准备工作

这里我们配合mysql来完成文档的操作,要使用mybatis-plus,所以给该测试类加上@SpringBootTest,并注入相应的mapper或者service。
user的sql语句

DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user`  (`id` bigint(25) NOT NULL AUTO_INCREMENT,`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;INSERT INTO `tb_user` VALUES (1, 'zhangsan');
INSERT INTO `tb_user` VALUES (2, 'lisi');
INSERT INTO `tb_user` VALUES (3, 'wangwu');
INSERT INTO `tb_user` VALUES (4, 'zhaoliu');
INSERT INTO `tb_user` VALUES (5, 'xiaomei');
INSERT INTO `tb_user` VALUES (6, 'xiaobai');
INSERT INTO `tb_user` VALUES (7, 'at');
INSERT INTO `tb_user` VALUES (8, 'sh');
INSERT INTO `tb_user` VALUES (9, 'wsgp');
INSERT INTO `tb_user` VALUES (10, 'iop');
INSERT INTO `tb_user` VALUES (11, 'askdhgk');

user实体类

package cn.itcast.hotel.pojo;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;@Data
@TableName("tb_user")
public class User {@TableId(type = IdType.INPUT)private Long id;private String Name;
}

UserMapper类

package cn.itcast.hotel.mapper;import cn.itcast.hotel.pojo.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;public interface UserMapper extends BaseMapper<User> {
}

单个文档插入

    @Testvoid addDoc() throws IOException {User user = userMapper.selectById(1);System.out.println(user);IndexRequest request = new IndexRequest("user").id(user.getId().toString());request.source(JSON.toJSONString(user), XContentType.JSON);client.index(request, RequestOptions.DEFAULT);}

查看是否插入成功:
在这里插入图片描述

查询文档

    @Testvoid getDoc() throws IOException {GetRequest request = new GetRequest("user", "1");GetResponse response = client.get(request, RequestOptions.DEFAULT);String json = response.getSourceAsString();User user = JSON.parseObject(json, User.class);System.out.println(user);}

在这里插入图片描述

更新和删除文档

这里有全量更新和局部更新,全量更新就和插入文档一样,所以这里只介绍局部更新。

    /*** 局部更新*/@Testvoid updateDoc() throws IOException {UpdateRequest request = new UpdateRequest("user", "1");request.doc("name", "zs");client.update(request, RequestOptions.DEFAULT);}/*** 删除指定文档* @throws IOException*/@Testvoid deleteDoc() throws IOException {DeleteRequest request = new DeleteRequest("user", "1");client.delete(request, RequestOptions.DEFAULT);}

在这里插入图片描述
在这里插入图片描述

批量插入文档

    /*** 批量插入* @throws IOException*/@Testvoid addDocBulk() throws IOException {List<User> users = userMapper.selectList(null);BulkRequest request = new BulkRequest();for (User user : users) {request.add(new IndexRequest("test").id(user.getId().toString()).source(JSON.toJSONString(user), XContentType.JSON));}client.bulk(request, RequestOptions.DEFAULT);}

在这里插入图片描述

这篇关于RestClient操作索引库和文档的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1076656

相关文章

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Python内存管理机制之垃圾回收与引用计数操作全过程

《Python内存管理机制之垃圾回收与引用计数操作全过程》SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式,本文将介绍如何使用SQLAlc... 目录安装核心概念连接数据库定义数据模型创建数据库表基本CRUD操作创建数据读取数据更新数据删除数据查

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

C++读写word文档(.docx)DuckX库的使用详解

《C++读写word文档(.docx)DuckX库的使用详解》DuckX是C++库,用于创建/编辑.docx文件,支持读取文档、添加段落/片段、编辑表格,解决中文乱码需更改编码方案,进阶功能含文本替换... 目录一、基本用法1. 读取文档3. 添加段落4. 添加片段3. 编辑表格二、进阶用法1. 文本替换2

一文详解MySQL索引(六张图彻底搞懂)

《一文详解MySQL索引(六张图彻底搞懂)》MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度,:本文主要介绍MySQL索引的相关资料,文中通过代码介绍的... 目录一、什么是索引?为什么需要索引?二、索引该用哪种数据结构?1. 哈希表2. 跳表3. 二叉排序树4.

Java 字符串操作之contains 和 substring 方法最佳实践与常见问题

《Java字符串操作之contains和substring方法最佳实践与常见问题》本文给大家详细介绍Java字符串操作之contains和substring方法最佳实践与常见问题,本文结合实例... 目录一、contains 方法详解1. 方法定义与语法2. 底层实现原理3. 使用示例4. 注意事项二、su

Python实现自动化删除Word文档超链接的实用技巧

《Python实现自动化删除Word文档超链接的实用技巧》在日常工作中,我们经常需要处理各种Word文档,本文将深入探讨如何利用Python,特别是借助一个功能强大的库,高效移除Word文档中的超链接... 目录为什么需要移除Word文档超链接准备工作:环境搭建与库安装核心实现:使用python移除超链接的

Java Stream流与使用操作指南

《JavaStream流与使用操作指南》Stream不是数据结构,而是一种高级的数据处理工具,允许你以声明式的方式处理数据集合,类似于SQL语句操作数据库,本文给大家介绍JavaStream流与使用... 目录一、什么是stream流二、创建stream流1.单列集合创建stream流2.双列集合创建str