JavaRestClient 客户端初始化+索引库操作

news/2025/1/15 13:02:37/

1. 介绍

ES官方提供了各种不同语言的客户端,用来操作ES。这些客户端的本质就是组装DSL语句,通过http请求发送给ES。

Elasticsearch目前最新版本是8.0,其java客户端有很大变化。不过大多数企业使用的还是8以下版本


2. 客户端初始化

在elasticsearch提供的API中,与elasticsearch一切交互都封装在一个名为RestHighLevelClient的类中,必须先完成这个对象的初始化建立与elasticsearch的连接

下面就使用黑马商城作为示例进行一个改造

2.1 步骤

2.1.1 导入依赖

item-service商品模块导入该依赖

代码如下:

  <!--ElasticSearch--><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId></dependency>

2.1.2  覆盖SpringBoot默认的ES版本

父工程hmall进行修改,由于SpringBoot默认的ES版本是7.17.10,所以我们需要覆盖默认的ES版本

properties标签中添加elasticsearch-version7.12.1版本


2.1.3  初始化RestHighLevelClient

写一个单元测试进行连接

写三个方法,分别是初始化、结束、测试连接方法

快捷键生成:按下Alt+Insert生成以上三个方法


 启动测试连接方法


3. 索引库操作

在之前写的单元测试中进行索引库操作

 代码如下:

package com.hmall.item.es;import org.apache.http.HttpHost;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.support.master.AcknowledgedResponse;
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.GetIndexRequest;
import org.elasticsearch.common.xcontent.XContentType;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;import java.io.IOException;/*
RestHighLevelClient 客户端初始化  索引库操作 增删查测试
*/
public class ElasticIndexTest {private RestHighLevelClient client;// 测试连接@Testvoid testConnection() {System.out.println("client=" + client);}// 初始化方法@BeforeEachvoid setUp() {client = new RestHighLevelClient(RestClient.builder(HttpHost.create("http://192.168.115.15:9200")));}//结束方法@AfterEachvoid tearDown() throws IOException {if (client != null) {client.close();}}//创建索引库@Testvoid testCreateIndex() throws IOException {//1. 准备Request对象CreateIndexRequest request = new CreateIndexRequest("items");//2. 准备请求参数request.source(MAPPING_TEMPLATE, XContentType.JSON);//3. 发送请求client.indices().create(request, RequestOptions.DEFAULT);}// 查询索引库是否存在@Testvoid testGetIndex() throws IOException {//1. 准备Request对象GetIndexRequest request = new GetIndexRequest("items");//2. 发送请求boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);System.out.println("exists======================" + exists);}//删除索引库@Testvoid testDeleteIndex() throws IOException {//1. 准备Request对象DeleteIndexRequest request = new DeleteIndexRequest("items");//2. 发送请求AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);System.out.println("delete------------------------->" + delete.isAcknowledged());}// 索引库映射private static final String MAPPING_TEMPLATE = "{\n" +"  \"mappings\": {\n" +"    \"properties\": {\n" +"      \"id\": {\n" +"        \"type\": \"keyword\"\n" +"      },\n" +"      \"name\": {\n" +"        \"type\": \"text\",\n" +"        \"analyzer\": \"ik_smart\"\n" +"      },\n" +"      \"price\": {\n" +"        \"type\": \"integer\"\n" +"      },\n" +"      \"image\": {\n" +"        \"type\": \"keyword\",\n" +"        \"index\": false\n" +"      },\n" +"      \"category\": {\n" +"        \"type\": \"keyword\"\n" +"      },\n" +"      \"brand\": {\n" +"        \"type\": \"keyword\"\n" +"      },\n" +"      \"sold\": {\n" +"        \"type\": \"integer\"\n" +"      },\n" +"      \"commentCount\": {\n" +"        \"type\": \"integer\",\n" +"        \"index\": false\n" +"      },\n" +"      \"isAD\": {\n" +"        \"type\": \"boolean\"\n" +"      },\n" +"      \"updateTime\": {\n" +"        \"type\": \"date\"\n" +"      }\n" +"    }\n" +"  }\n" +"}";
}

http://www.ppmy.cn/news/1563321.html

相关文章

Level2逐笔成交逐笔委托毫秒记录:今日分享优质股票数据20250114

逐笔成交逐笔委托下载 链接: https://pan.baidu.com/s/18YtQiLnt06cPQP1nRXor0g?pwd4k3h 提取码: 4k3h Level2逐笔成交逐笔委托数据分享下载 基于Level2的逐笔成交和逐笔委托数据&#xff0c;这种毫秒级别的记录能分析出许多关键信息&#xff0c;如庄家意图、虚假动作&#…

day01-HTML-CSS——基础标签样式表格标签表单标签

目录 此篇为简写笔记下端1-3为之前笔记&#xff08;强迫症、保证文章连续性&#xff09;完整版笔记代码模仿新浪新闻首页完成审核不通过发不出去HTMLCSS1 HTML1.1 介绍1.1.1 WebStrom中基本配置 1.2 快速入门1.3 基础标签1.3.1 标题标签1.3.2 hr标签1.3.3 字体标签1.3.4 换行标…

uniapp页面高度设置(铺满可视区域、顶部状态栏高度、底部导航栏高度)

这里说几种在uniapp开发中,关于页面设置高度的几种情况。宽度就不说了哈,宽度设置百分比都会生效。 首先我们要知道平时开发中,如果说没在uniapp做特殊处理,即正常情况下,所有的页面(.vue文件)中都是没有高度的(和vue一样),也就是说给最外层的的view标签设置高度为1…

cmake 编译ffmpeg的Android 的 so文件的cmake内容

确保你的开发环境已经设置好&#xff0c;包括安卓NDK和相应版本的FFmpeg源码。 下载并配置FFmpeg源码。 git clone https://git.ffmpeg.org/ffmpeg.gitcd ffmpeg 使用NDK-build或者cmake来编译FFmpeg。 5. 在ffmpeg路径下&#xff0c;新建build.sh , 下载MYSYS&#xff0c…

设计模式-结构型-组合模式

1. 什么是组合模式&#xff1f; 组合模式&#xff08;Composite Pattern&#xff09; 是一种结构型设计模式&#xff0c;它允许将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得客户端对单个对象和组合对象的使用具有一致性。换句话说&#xff0c;组合模式允…

亿道三防丨三防笔记本是什么意思?和普通笔记本的优势在哪里?

三防笔记本是什么意思&#xff1f;和普通笔记本的优势在哪里&#xff1f; 在现代社会中&#xff0c;笔记本电脑已经成为人们工作和生活中不可或缺的一部分。然而&#xff0c;在一些特殊行业或环境中&#xff0c;普通笔记本电脑由于其脆弱性和对环境条件的敏感性&#xff0c;往…

夯实前端基础之CSS篇

知识点概览 这一篇是讲CSS的&#xff0c;前面还有一篇总结HTML的哦~夯实前端基础之HTML篇&#xff0c;后面还会更新其他系列哦~ 一、必知必会 1. html中引入样式的几种方式&#xff1f; 内联样式&#xff08;html元素的style属性&#xff09;内部样式表&#xff08;style标签…

RAG 带来的一些问题

RAG (Retrieval-Augmented Generation) 提高了查询的准确性&#xff0c;但也引入了一些新的问题。主要问题集中在信息检索和生成模型的结合方式上&#xff0c;这些问题影响了系统的性能、效率和输出质量。以下是 RAG 带来的主要问题以及相应的解决方法。 1. 依赖外部检索系统的…