025 elasticsearch索引管理-Java原生客户端

文章目录

    • pom.xml
    • 1创建索引
    • 2.创建索引并设置settings信息
    • 3.创建索引并设置mapping信息
    • 4.删除索引库
    • 5.给未设置mapping的索引设置mapping

elasticsearch版本7.10.2,要求java客户端与之相匹配,推荐Springboot版本是2.3以上版本

依赖配置使用的是JUnit 5(由<artifactId>spring-boot-starter-test</artifactId>提供支持),而@Before注解是JUnit 4中的注解。在JUnit 5中,应该使用@BeforeEach来代替@Before。
替换注解:
将所有的@Before注解替换为@BeforeEach。
确保你的测试类使用了JUnit 5的相关注解,如@Test(JUnit 5中的@Test注解位于org.junit.jupiter.api.Test)。
确保测试类正确配置:
确保你的测试类上没有使用JUnit 4的@RunWith注解。
如果使用了Spring的测试支持,确保类上有@SpringBootTest或其他相关的Spring测试注解。
更新测试方法:
确认所有的测试方法都使用了JUnit 5的@Test注解。

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.2.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><artifactId>chubemall-search</artifactId><packaging>jar</packaging><name>chubemall-search</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR3</spring-cloud.version><elasticsearch.version>7.10.2</elasticsearch.version></properties><dependencies>
<!--        <dependency>-->
<!--            <groupId>junit</groupId>-->
<!--            <artifactId>junit</artifactId>-->
<!--            <version>3.8.1</version>-->
<!--            <scope>test</scope>-->
<!--        </dependency>--><!--引入common公共模块--><dependency><groupId>com.xd.cubemall</groupId><artifactId>cubemall-common</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>-->
<!--        </dependency>--><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.10.2</version></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
</project>

1创建索引

步骤:
1.创建一个RestHightLevelClient对象,相当于和服务端建立连接
2.使用client的索引管理的对象,indices()返回索引管理对象

package com.xd.cubemall.es;import org.apache.http.HttpHost;
import org.elasticsearch.client.IndicesClient;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.junit.jupiter.api.Test;/*** 索引管理*/
public class IndexManager {@Testpublic void createIndex() throws Exception {//创建一个client对象RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("1.1.1.1",9200),new HttpHost("2.2.2.2",9200),new HttpHost("3.3.3.3",9200)));//获得索引管理对象IndicesClient indicesClient = client.indices();//两个参数//1.创建索引请求对象CreateIndexRequest request = new CreateIndexRequest("hello");//2.请求选项,使用默认值。配置请求头,主要用于认证。CreateIndexResponse response = indicesClient.create(request, RequestOptions.DEFAULT);System.out.println(response);}
}

2.创建索引并设置settings信息

CreateIndexRequest对象中设置settings即可

package com.xd.cubemall.es;import org.apache.http.HttpHost;
import org.elasticsearch.client.IndicesClient;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.elasticsearch.common.settings.Settings;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;/*** 索引管理*/
public class IndexManager {private RestHighLevelClient client;@BeforeEachpublic void init() {//创建一个client对象client = new RestHighLevelClient(RestClient.builder(new HttpHost("1.1.1.1",9200),new HttpHost("2.2.2.2",9200),new HttpHost("3.3.3.3",9200)));}@Testpublic void createIndex() throws Exception {//获得索引管理对象IndicesClient indicesClient = client.indices();//两个参数//1.创建索引请求对象CreateIndexRequest request = new CreateIndexRequest("hello");//2.请求选项,使用默认值。配置请求头,主要用于认证。CreateIndexResponse response = indicesClient.create(request, RequestOptions.DEFAULT);//显示结果System.out.println(response);}@Testpublic void createIndex2() throws Exception {CreateIndexRequest request = new CreateIndexRequest("hello1").settings(Settings.builder().put("number_of_shards", 5).put("number_of_replicas",1).build());System.out.println("Client is null: " + (client == null));System.out.println("Request is null: " + (request == null));client.indices().create(request,RequestOptions.DEFAULT);}}

3.创建索引并设置mapping信息

{"properties":{"id":{"type":"long"},"title":{"type":"text","analyzer":"ik_smart","store":true},"content":{"type":"text","analyzer":"ik_smart","store":true}		}
}
    @Testpublic void createIndex3() throws Exception {XContentBuilder mappings = XContentFactory.jsonBuilder().startObject().startObject("properties").startObject("id").field("type","long").endObject().startObject("title").field("type","text").field("analyzer","ik_smart").field("store",true).endObject().startObject("content").field("type","text").field("analyzer","ik_smart").field("store",true).endObject().endObject().endObject();CreateIndexRequest request = new CreateIndexRequest("hello2").settings(Settings.builder().put("number_of_shards", 5).put("number_of_replicas",1).build()).mapping(mappings);client.indices().create(request, RequestOptions.DEFAULT);}

4.删除索引库

DeleteIndexRequest对象,其中包含索引库的名称即可
indices().delete(request)

    @Testpublic void deleteIndex() throws Exception {client.indices().delete(new DeleteIndexRequest("hello"),RequestOptions.DEFAULT);}

5.给未设置mapping的索引设置mapping

    @Testpublic void putMappings() throws Exception {String mappings = "{\n" +"\t\"properties\":{\n" +"\t\t\"id\":{\n" +"\t\t\t\"type\":\"long\"\n" +"\t\t},\n" +"\t\t\"title\":{\n" +"\t\t\t\"type\":\"text\",\n" +"\t\t\t\"analyzer\":\"ik_smart\",\n" +"\t\t\t\"store\":true\n" +"\t\t},\n" +"\t\t\"content\":{\n" +"\t\t\t\"type\":\"text\",\n" +"\t\t\t\"analyzer\":\"ik_smart\",\n" +"\t\t\t\"store\":true\n" +"\t\t}\t\t\n" +"\t}\n" +"}";PutMappingRequest request = new PutMappingRequest("hello1").source(mappings, XContentType.JSON);client.indices().putMapping(request,RequestOptions.DEFAULT);}

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

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

相关文章

oracle操作回退SQL

对表数据进行操作后&#xff0c;提交了事务&#xff0c;发现数据更新或者删除错了&#xff0c;这时候还是有方法可以数据回退的 进行数据回退操作&#xff0c;将数据回退到xxxx分钟&#xff0c;也就是update操作之前&#xff1a; 在回退之前&#xff0c;先查询xx分钟的数据&…

MYSQL-windows安装配置两个或多个版本MYSQL

安装第一个mysql很简单&#xff0c;这里不再赘述。主要说说第二个怎么安装&#xff0c;服务怎么配置。 1. 从官网下载第二个MySQL并安装 一般都是免安装版了&#xff0c;下载解压到某个文件目录下(路径中尽量不要带空格或中文)&#xff0c;再新建一个my.ini文件&#xff08;或…

Reality Capture 软件安装 附下载链接

Reality Capture 软件安装 文章目录 Reality Capture 软件安装一、Reality Capture v1.4汉化版安装包下载并解压二、Epic Games Launcher安装三、设置路径并安装![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f077210990674d9fa9c10b52338b52fe.png)四、启动Epic Ga…

Chromium 如何查找V8 引擎中JavaScript 标准内置对象

JavaScript 标准内置对象 - JavaScript | MDN (mozilla.org) 一、JavaScript 标准内置对象 本章介绍和说明了 JavaScript 中所有的标准内置对象、以及它们的方法和属性。 这里的术语“全局对象”&#xff08;或标准内置对象&#xff09;不应与 global 对象混淆。这里的“全局…

OpenStack服务Swift重启失效(已解决)

案例分析Swift重启失效 1. 报错详情 在重新启动 VMware 虚拟机后&#xff0c;我们发现 OpenStack 的 Swift 服务出现了 503 Service Unavailable 错误。经过排查&#xff0c;问题根源在于 Swift 服务所使用的存储挂载是临时挂载&#xff0c;而非永久挂载。 Swift 服务依赖于…

985研一学习日记 - 2024.10.11

偶尔一碗热鸡汤&#xff1a;一个人内耗&#xff0c;说明他活在过去&#xff1b;一个人焦虑&#xff0c;说明他活在未来。只有当一个人平静时&#xff0c;他才活在现在。 日常 1、6&#xff1a;00起床 √ 2、健身1h 今天练了肩部以及背&#xff0c;然后跑步半小时 3、LeetC…

Python环境搭建

Python环境搭建 1 安装Python 双击安装包 2 安装Pycharm 双击安装包,然后下一步 安装完成后重启电脑 3 破解Pycharm 启动Pycharm 破解 4 pycharm的基本配置 1.主题颜色 2. 文件语言编码 滚动鼠标滑轮ctrl&#xff0c;可以快速缩放文本字体大小。 控制台编码的格式&#x…

Qt - QMenu

QMenu 1、menu转string输出 //GlobalEnum.h #include <QObject> #include <QMetaEnum> class GlobalEnum : public QObject {Q_OBJECT public:EnumTest();enum Enum_Test{ZhangSan 0,WangWu,};Q_ENUM(Enum_Test) };#define EnumToString(e) \ QMetaEnum::fromTy…

Python异步编程:使用`asyncio.Semaphore`控制并发

Python异步编程&#xff1a;使用asyncio.Semaphore控制并发 1. 什么是asyncio.Semaphore&#xff1f;2. 为什么需要asyncio.Semaphore&#xff1f;3. 如何使用asyncio.Semaphore&#xff1f;3.1 基本用法3.2 信号量的工作原理3.3 动态调整信号量 4. 适用场景5. 总结 在Python的…

Qt初识_通过代码创建hello world

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 Qt初识_通过代码创建hello world 收录于专栏【Qt开发】 本专栏旨在分享学习Qt的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 1.通过按…

c语言库文件

c语言库文件 动态库动态库制作首先生成动态库文件名使用动态库编译动态库运行删除动态库1.sudo su 静态库静态库制作需要将源文件.c转换成二进制文件.o&#xff08;重定向文件&#xff09;将重定向文件打包成静态库文件使用静态库文件 静态库和动态库的区别 库文件的概念 我们将…

python-读写Excel:openpyxl-(1)基础操作之读写数据

目录 工作薄 创建/打开工作薄对象 获得默认sheet 工作表 创建工作表 删除工作表 获取表名 复制表 获取表对象 单元格 列号数字与字母转换 获取有效数据行和列 单元格对象获取 获取有效数据区域 获取指定行对象 value获取单元格数据值 修改及写入数据 插入或删…

C#里使用DataGridView来显示500万行数据

如果有500万行数据需要显示,大家肯定感觉很麻烦。 因为一次性地往列表里添加500万行数据,就需要很久的时间, 并且当滚动的时候就会更新比较慢。 有没有更好的方式呢? 其实可以采用虚拟列表的方式,也就是设置下面的方式: dataGridView1.VirtualMode = true; 这样列表…

老人桌面 1.3.5|专为老人设计的便捷实用桌面应用

老人桌面是一款专为老人设计的便捷实用桌面应用&#xff0c;具有超大字体设计&#xff0c;符合老人视力水平&#xff0c;撞色简洁的应用界面&#xff0c;拯救老人视觉体验。此外&#xff0c;还提供了常用的实用小工具&#xff0c;让老人能够轻松使用手机。 大小&#xff1a;5.…

vuefor循环动态展示图片不显示

问题代码如下 <div class"zjjc_list_bottom" v-for"(item, index) in zjjcList" :key"item.id"><img :src"./assets/left_blue_ (index 1) .png" alt""> </div> 理论来说是不会有问题&#xff0c;但…

An.如何在an中截取音频片段

如何在an中截取音频片段 在an动画制作过程中&#xff0c;部分片段需要插入音乐&#xff0c;如果想要插入一首歌曲的其中一小节&#xff0c;打开音频编辑软件操作就很麻烦&#xff0c;不妨直接在an中操作&#xff1a; 以这首节气歌为例&#xff0c;前奏太长需要剪掉前面的部分 …

图片/视频预览页面开发

使用到了vant-ui中的轮播组件、图片组件 数据结构示例&#xff1a; // type: 1图片 2视频 list: [{type: 1,url: adfdsfadsfasdf.png,},{type: 2,url: asdfasdfasdf.mp4,} ],item: {type: 1,url: adfdsfadsfasdf.png, },// utils/index.js/*** 图片/视频预览* param list* …

Spring Boot 整合 RocketMQ 之普通消息

前言&#xff1a; 在消息中间件领域中 RocketMQ 是一种非常常见的消息中间件了&#xff0c;并且是由阿⾥巴巴开源的消息中间件 &#xff0c;本篇简单分享一下 Spring Boot 项目集成 RocketMQ 的过程。 RocketMQ 系列文章传送门 RocketMQ 的介绍及核心概念讲解 Spring Boot …

WPF -- LiveCharts的使用和源码

LiveCharts 是一个开源的 .NET 图表库&#xff0c;特别适用于 WPF、WinForms 和其他 .NET 平台。它提供了丰富的图表类型和功能&#xff0c;使开发者能够轻松地在应用程序中创建动态和交互式图表。下面我将使用WPF平台创建一个测试实例。 一、LiveCharts的安装和使用 1.安装N…

VUE-鼠标移入到目标区域变成小手形状

工作中有个场景&#xff1a;当鼠标移动到某个区域时显示为“小手”状 其实这个东西特别简单&#xff0c;只是用的不多平常。 我们只需要给目标区域的style样式中加入【cursor: pointer;】这个鼠标就好了。 <span class"el-dropdown-link">下载 </span>…