欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > JavaRestClient 客户端初始化+索引库操作

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

2026/3/22 18:14:14 来源:https://blog.csdn.net/p23gjj/article/details/145087191  浏览:    关键词:JavaRestClient 客户端初始化+索引库操作

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" +"}";
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词