Elastic stack技术栈学习(十)— springboot集成ES API详解

目录

一、关于索引的API详解

1.1 声明客户端

1.2 创建索引

1.3 获取文档 / 判断文档是否存在 

​1.4 删除索引

二、关于文档的API详解

2.1 添加文档

2.2 判断文档是否存在

2.3 获取文档信息 

2.4 更新文档

2.5 删除文档

2.6 批量添加文档

2.7 批量删除文档

2.8  批量更新文档

2.9 批量删除文档(二)

2.10 查询

三、附上完整代码


在test里测试一下各个API。

打开es,也运行es-head,方便观察。

一、关于索引的API详解

这里的client对ES发出请求,就相当于我们的kibana

1.1 声明客户端

@SpringBootTest
class SpringEsApiApplicationTests {
	@Autowired
	@Qualifier("restHighLevelClient")
	private RestHighLevelClient client;  //加上@@Qualifier,就可以用client去替换restHighLevelClient
										 // client就相当于kibana

	@Test
	void contextLoads() {
	}
}

1.2 创建索引

 官方说明:Create Index API | Java REST Client [7.17] | ElasticCreate Index API | Java REST Client [7.15] | ElasticCreate Index API | Java REST Client [7.17] | Elastic

PS:看文档的时候注意选择合适的client版本,我这里看的就是7.15版本的 

主要就是两步:

(1)定义 创建索引请求(CreateIndexRequest)

(2)client发送请求,返回值是响应的对象

//测试 创建索引 Request
	@Test
	void testCreateIndex() throws IOException {
		//1.定义 创建索引请求(CreateIndexRequest)
		CreateIndexRequest request = new CreateIndexRequest("test2");
		//2.client发送请求,获得响应
		CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);

		System.out.println(response);
	}

运行。 

通过命令行的返回值可以看到返回了创建索引的response:

去head中查看,创建成功。

1.3 获取文档 / 判断文档是否存在 

官方:Index Exists API | Java REST Client [7.15] | Elastic

	//测试 获取索引 Request
	@Test
	void testGetIndex() throws IOException {
		//1.定义 获取索引请求
		GetIndexRequest request = new GetIndexRequest("test2");
		//2.client发送请求,返回布尔值
		boolean exists = client.indices().exists(request,RequestOptions.DEFAULT);

		System.out.println(exists);
	}

 运行。

 1.4 删除索引

 官方文档:Delete Index API | Java REST Client [7.15] | Elastic

//测试 删除索引
	@Test
	void testDeleteIndex() throws IOException {
		//1.定义 删除索引请求
		DeleteIndexRequest request = new DeleteIndexRequest("test2");
		//2.client发送请求,获得响应
		AcknowledgedResponse response = client.indices().delete(request, RequestOptions.DEFAULT);

		System.out.println(response.isAcknowledged()); //响应的状态为true就代表成功删除
	}

运行单元测试。 

 命令行显示删除成功,再来head看一下。

二、关于文档的API详解

(1)便于测试文档,我们先新建一个索引user

 (2)在如下图位置中新建一个pojo文件夹,新建一个User类,其对象就相当于我们的文档。

(3)因为对es发请求需要用json的格式,所以我们引入一个fastjson依赖包。

在远程仓库中搜索(中央仓库没搜到,也可能是我不会搜):https://mvnrepository.com/search?q=fastjson

使用这个阿里巴巴提供的fastjson。

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.79</version>
</dependency>

问题:出现找不到依赖的错误 

 解决https://blog.csdn.net/qq_44886213/article/details/123461522

2.1 添加文档

官方说明:Index API | Java REST Client [7.15] | Elastic

错误代码:

@Test
	void testAddDocument() throws IOException {
	
		//1.请求连接索引库
		IndexRequest request = new IndexRequest("User");
		//2.匹配规则: put /User/_doc/id,封装request
		request.id("zxf");
		request.timeout(TimeValue.timeValueSeconds(1)); //最长等待时间,法一
		request.timeout("1s");  //法二

        //3.创建文档对象
    	User user = new User("zxf", 36);
		//4.将请求转化为json格式
		request.source(JSON.toJSONString(user), XContentType.JSON);

		//5.向索引中添加数据
		IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
		//打印结果
		System.out.println(indexResponse.toString());
		System.out.println(indexResponse.status());
	}

问题01:Java类的全参构造函数失效

解决@AllArgsConstructor等lombok注解不生效_玛丽莲茼蒿的博客-CSDN博客

问题02:运行单元测试时报错

解决:索引必须全是小写字母。将“User”改为"user"。

正确代码:

@Test
	void testAddDocument() throws IOException {
	
		//1.创建请求连接索引对象
		IndexRequest request = new IndexRequest("user");
		//2.匹配规则: put /User/_doc/id, 封装request对象
		request.id("zxf");
		request.timeout(TimeValue.timeValueSeconds(1)); //最长等待时间,法一
		request.timeout("1s");  //法二

        //3.创建文档对象
    	User user = new User("zxf", 36);
		//4.将请求转化为json格式
		request.source(JSON.toJSONString(user), XContentType.JSON);

		//5.向索引中添加数据
		IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
		//打印结果
		System.out.println(indexResponse.toString());
		System.out.println(indexResponse.status());
	}

便于记忆,可以如下划分逻辑

2.2 判断文档是否存在

官方说明:Exists API | Java REST Client [7.15] | Elastic

//测试 文档是否存在
	@Test
	void testExistDocument() throws IOException {
		GetRequest getRequest = new GetRequest("user", "zxf");
		//getRequest.fetchSourceContext(new FetchSourceContext(false));  // 过滤掉_source上下文的信息
		//getRequest.storedFields("_none_");
		boolean exists = client.exists(getRequest,RequestOptions.DEFAULT);
		System.out.println(exists);
	}

2.3 获取文档信息 

官方说明:Get API | Java REST Client [7.15] | Elastic

//测试 获取文档信息
	@Test
	void testGetDocument() throws IOException {
		GetRequest getRequest = new GetRequest("user", "zxf");
		GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
		System.out.println(getResponse);  //返回的信息内容和kibana中一致
		System.out.println(getResponse.getSource()); //只返回source字段,以Map格式返回
		System.out.println(getResponse.getSourceAsString()); //只返回source字段,以字符串格式返回
	}

 2.4 更新文档

官方说明:Update API | Java REST Client [7.15] | Elastic

更新文档和添加文档的思路、步骤差不多,学会了添加文档,可以自己尝试写更新文档。

@Test
	void testUpdateDocument() throws IOException {
		// 创建请求对象,封装对象
		UpdateRequest updateRequest = new UpdateRequest("user", "zxf");
		updateRequest.timeout("1s");

		// 创建文档对象,转为json格式放入updateRequest里
		User user = new User("zxf", 37);
		updateRequest.doc(JSON.toJSONString(user), XContentType.JSON);

		//client发起请求,返回响应对象
		UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);
		System.out.println(updateResponse.status());
	}

 再去head里检查一下,更新成功。

 这里需要记住的一点是,用到了doc()方法,和我们kibana使用更新命令是一致的。

 2.5 删除文档

官方说明:Delete API | Java REST Client [7.15] | Elastic

上面学习了那么多,这个也可以尝试自己去写了。

//测试 删除文档
	@Test
	void testDeleteDocument() throws IOException {
		DeleteRequest deleteRequest = new DeleteRequest("user", "zxf");
        //deleteRequest.timeout("1s");  //超过1秒就不执行了
		DeleteResponse deleteResponse = client.delete(deleteRequest, RequestOptions.DEFAULT);
		System.out.println(deleteResponse.status());
	}

 再去head看一下,删除成功

2.6 批量添加文档

前面讲得都是添加、更新、删除单个文档,但是在真实项目中都是批量处理的。所以官方给出了批量处理的API:Bulk API | Java REST Client [7.15] | Elastic

代码:还是分3步走 

//测试 批量添加文档
	@Test
	void testBulkDocument() throws IOException {
		//1. 创建请求对象,封装对象
		BulkRequest bulkRequest = new BulkRequest();
		bulkRequest.timeout("10s"); //根据需求(感觉)设置

		//2.创建文档对象列表
		ArrayList<User> userArrayList = new ArrayList<>();
		userArrayList.add(new User("zxf1", 11)) ;
		userArrayList.add(new User("zxf2", 12)) ;
		userArrayList.add(new User("zxf3", 13)) ;
		userArrayList.add(new User("zxf4", 14)) ;
		userArrayList.add(new User("zxf5", 15)) ;
		//批处理请求
		for(int i=0;i<userArrayList.size();i++){
			bulkRequest.add(
					new IndexRequest("user")  //3种选择:添加文档、更新文档、删除文档
					.id(""+(i+1))  //不定义id的话会自动生成随机数作为id
					.source(JSON.toJSONString(userArrayList.get(i)),XContentType.JSON)
			);
		}

		//3.client发起批量请求
		BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);
		System.out.println(bulkResponse.hasFailures()); //输出是否失败,false为成功
	}

 

 再去head看一下

 注意01:如果想要改为批量删除、批量更新操作,只需要改动这里: 

  注意02:如果去掉对id的设置,运行,查看一下结果

生成随机数作为id 

 

2.7 批量删除文档

为了后面的测试,我们先删掉这些id为随机数的文档。

//测试 批量删除
	@Test
	void testBulkDeleteDocument() throws IOException {
		//1. 创建批量请求对象,封装对象
		BulkRequest bulkRequest = new BulkRequest();
		bulkRequest.timeout("10s");

		//2.批处理请求
		bulkRequest.add(
				new DeleteRequest("user","FOJ4i38BZC1sB52QAx4r")
		);
		bulkRequest.add(
				new DeleteRequest("user","FeJ4i38BZC1sB52QAx4r")
		);
		bulkRequest.add(
				new DeleteRequest("user","FuJ4i38BZC1sB52QAx4r")
		);
		bulkRequest.add(
				new DeleteRequest("user","F-J4i38BZC1sB52QAx4r")
		);
		bulkRequest.add(
				new DeleteRequest("user","GOJ4i38BZC1sB52QAx4r")
		);

		//client发起批处理请求
		BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);
		System.out.println(bulkResponse.hasFailures());
	}

去head中看一下。 

 

2.8  批量更新文档

//测试 批量更新文档
	@Test
	void testBulkUpdateDocument() throws IOException {
		//1. 创建请求对象,封装对象
		BulkRequest bulkRequest = new BulkRequest();
		bulkRequest.timeout("10s"); //根据需求(感觉)设置

		//2.创建文档对象列表
		ArrayList<User> userArrayList = new ArrayList<>();
		userArrayList.add(new User("ff1", 101)) ;
		userArrayList.add(new User("ff2", 102)) ;
		userArrayList.add(new User("ff3", 103)) ;
		userArrayList.add(new User("ff4", 104)) ;
		userArrayList.add(new User("ff5", 105)) ;
		//批处理请求
		for (int i=0;i<userArrayList.size();i++){
			bulkRequest.add(
					new UpdateRequest("user","")  //id空着就行,但是不能不写
					.id(""+(i+1))
					.doc(JSON.toJSONString(userArrayList.get(i)),XContentType.JSON)
			);
		}

		//3.client发起批量请求
		BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);
		System.out.println(bulkResponse.hasFailures()); //输出是否失败,false为成功
	}

 2.9 批量删除文档(二)

前面的批量删除没有用循环,如果id是连续或者有规律的,那么可以用循环。

//测试 批量删除文档(二) 循环
	@Test
	void testBulkDeleteDocument2() throws IOException {
		//1. 创建批量请求对象,封装对象
		BulkRequest bulkRequest = new BulkRequest();
		bulkRequest.timeout("10s");

		//2.批处理请求
		for(int i=0;i<5;i++){
			bulkRequest.add(
					new DeleteRequest("user","")  //id空着就行,但是不能不写
					.id(""+(i+1))
			);
		}

		//client发起批处理请求
		BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);
		System.out.println(bulkResponse.hasFailures());
	}

2.10 查询

这次查询之间建立的名为"test1"的索引。基本上还是可以认为分3步走。

//测试 搜索
	@Test
	void testSearch() throws IOException {
		//1.创建搜索请求对象、创建构造器对象
		SearchRequest searchRequest = new SearchRequest("test1");

		//2.封装这两个对象
		SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();  //搜索条件构造器
			//QueryBuilders.termQuery 精确匹配
			//QueryBuilders.matchAllQuery() 匹配所有
		TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "morning");
		//MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();
		searchSourceBuilder.query(termQueryBuilder);
		searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
		searchSourceBuilder.from(0); //分页
		searchSourceBuilder.size(3); //分页

		searchRequest.source(searchSourceBuilder);

		//3.client发起搜索请求
		SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
		System.out.println(JSON.toJSONString(searchResponse.getHits()) );

	}

运行。 

 注意01:可以和之前的学习比较着来记忆。

Elastic stack 技术栈学习(七)—— kibana中索引的基本操作(创建、删除、更新、查看)以及文档的基本操作_玛丽莲茼蒿的博客-CSDN博客

三、附上完整代码

package com.example.springesapi;

import com.alibaba.fastjson.JSON;
import com.example.springesapi.pojo.User;
import org.apache.lucene.util.QueryBuilder;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.support.master.AcknowledgedResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.elasticsearch.client.indices.GetIndexRequest;
import org.elasticsearch.client.ml.EvaluateDataFrameRequest;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.core.TimeValue;
import org.elasticsearch.index.query.MatchAllQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.TermQueryBuilder;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;

import java.io.IOException;
import java.util.ArrayList;
import java.util.concurrent.TimeUnit;

@SpringBootTest
class SpringEsApiApplicationTests {
	@Autowired
	@Qualifier("restHighLevelClient")
	private RestHighLevelClient client;  //加上@@Qualifier,就可以用client去替换restHighLevelClient
										 // client就相当于kibana

	@Test
	void contextLoads() {

	}
	//测试 创建索引 Request
	@Test
	void testCreateIndex() throws IOException {
		//1.定义 创建索引请求
		CreateIndexRequest request = new CreateIndexRequest("user");
		//2.client发送请求,获得响应
		CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);

		System.out.println(response);
	}

	//测试 获取索引 Request
	@Test
	void testGetIndex() throws IOException {
		//1.定义 获取索引请求
		GetIndexRequest request = new GetIndexRequest("test2");
		//2.client发送请求,返回布尔值
		boolean exists = client.indices().exists(request,RequestOptions.DEFAULT);

		System.out.println(exists);
	}

	//测试 删除索引
	@Test
	void testDeleteIndex() throws IOException {
		//1.定义 删除索引请求
		DeleteIndexRequest request = new DeleteIndexRequest("User");
		//2.client发送请求,获得响应
		AcknowledgedResponse response = client.indices().delete(request, RequestOptions.DEFAULT);

		System.out.println(response.isAcknowledged()); //响应的状态为true就代表成功删除
	}

	//测试 添加文档
	@Test
	void testAddDocument() throws IOException {

		//1.创建请求连接索引对象
		IndexRequest request = new IndexRequest("user");
		//2.匹配规则: put /User/_doc/id, 封装request对象
		request.id("zxf");
		request.timeout(TimeValue.timeValueSeconds(1)); //最长等待时间,法一
		request.timeout("1s");  //法二

		//3.创建文档对象
		User user = new User("zxf", 36);
		//4.将请求转化为json格式
		request.source(JSON.toJSONString(user), XContentType.JSON);

		//5.向索引中添加数据
		IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
		//打印结果
		System.out.println(indexResponse.toString());
		System.out.println(indexResponse.status());
	}

	//测试 文档是否存在
	@Test
	void testExistDocument() throws IOException {
		GetRequest getRequest = new GetRequest("user", "zxf");
		//getRequest.fetchSourceContext(new FetchSourceContext(false));  // 过滤掉_source上下文的信息
		//getRequest.storedFields("_none_");
		boolean exists = client.exists(getRequest,RequestOptions.DEFAULT);
		System.out.println(exists);
	}

	//测试 获取文档信息
	@Test
	void testGetDocument() throws IOException {
		GetRequest getRequest = new GetRequest("user", "zxf");
		GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
		System.out.println(getResponse);  //返回的信息内容和kibana中一致
		System.out.println(getResponse.getSource()); //只返回source字段,以Map格式返回
		System.out.println(getResponse.getSourceAsString()); //只返回source字段,以字符串格式返回
	}

	//测试 更新文档
	@Test
	void testUpdateDocument() throws IOException {
		// 创建更新请求对象,封装对象
		UpdateRequest updateRequest = new UpdateRequest("user", "zxf");
		updateRequest.timeout("1s");

		// 创建文档对象,转为json格式封装更新请求对象
		User user = new User("zxf", 37);
		updateRequest.doc(JSON.toJSONString(user), XContentType.JSON);

		//client发起请求,返回响应对象
		UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);
		System.out.println(updateResponse.status());
	}

	//测试 删除文档
	@Test
	void testDeleteDocument() throws IOException {
		DeleteRequest deleteRequest = new DeleteRequest("user", "zxf");
		DeleteResponse deleteResponse = client.delete(deleteRequest, RequestOptions.DEFAULT);
		System.out.println(deleteResponse.status());
	}

	//测试 批量添加文档
	@Test
	void testBulkAddDocument() throws IOException {
		//1. 创建请求对象,封装对象
		BulkRequest bulkRequest = new BulkRequest();
		bulkRequest.timeout("10s"); //根据需求(感觉)设置

		//2.创建文档对象列表
		ArrayList<User> userArrayList = new ArrayList<>();
		userArrayList.add(new User("zxf1", 11)) ;
		userArrayList.add(new User("zxf2", 12)) ;
		userArrayList.add(new User("zxf3", 13)) ;
		userArrayList.add(new User("zxf4", 14)) ;
		userArrayList.add(new User("zxf5", 15)) ;
		//批处理请求
		for (int i=0;i<userArrayList.size();i++){
			bulkRequest.add(
					new DeleteRequest("user")
			);
		}

		//3.client发起批量请求
		BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);
		System.out.println(bulkResponse.hasFailures()); //输出是否失败,false为成功
	}

	//测试 批量删除文档(一) 无循环
	@Test
	void testBulkDeleteDocument() throws IOException {
		//1. 创建批量请求对象,封装对象
		BulkRequest bulkRequest = new BulkRequest();
		bulkRequest.timeout("10s");

		//2.批处理请求
		bulkRequest.add(
				new DeleteRequest("user","FOJ4i38BZC1sB52QAx4r")
		);
		bulkRequest.add(
				new DeleteRequest("user","FeJ4i38BZC1sB52QAx4r")
		);
		bulkRequest.add(
				new DeleteRequest("user","FuJ4i38BZC1sB52QAx4r")
		);
		bulkRequest.add(
				new DeleteRequest("user","F-J4i38BZC1sB52QAx4r")
		);
		bulkRequest.add(
				new DeleteRequest("user","GOJ4i38BZC1sB52QAx4r")
		);

		//client发起批处理请求
		BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);
		System.out.println(bulkResponse.hasFailures());
	}

	//测试 批量更新文档
	@Test
	void testBulkUpdateDocument() throws IOException {
		//1. 创建请求对象,封装对象
		BulkRequest bulkRequest = new BulkRequest();
		bulkRequest.timeout("10s"); //根据需求(感觉)设置

		//2.创建文档对象列表
		ArrayList<User> userArrayList = new ArrayList<>();
		userArrayList.add(new User("ff1", 101)) ;
		userArrayList.add(new User("ff2", 102)) ;
		userArrayList.add(new User("ff3", 103)) ;
		userArrayList.add(new User("ff4", 104)) ;
		userArrayList.add(new User("ff5", 105)) ;
		//批处理请求
		for (int i=0;i<userArrayList.size();i++){
			bulkRequest.add(
					new UpdateRequest("user","")  //id空着就行,但是不能不写
					.id(""+(i+1))
					.doc(JSON.toJSONString(userArrayList.get(i)),XContentType.JSON)
			);
		}

		//3.client发起批量请求
		BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);
		System.out.println(bulkResponse.hasFailures()); //输出是否失败,false为成功
	}

	//测试 批量删除文档(二) 循环
	@Test
	void testBulkDeleteDocument2() throws IOException {
		//1. 创建批量请求对象,封装对象
		BulkRequest bulkRequest = new BulkRequest();
		bulkRequest.timeout("10s");

		//2.批处理请求
		for(int i=0;i<5;i++){
			bulkRequest.add(
					new DeleteRequest("user","")  //id空着就行,但是不能不写
					.id(""+(i+1))
			);
		}

		//client发起批处理请求
		BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);
		System.out.println(bulkResponse.hasFailures());
	}

	//测试 搜索
	@Test
	void testSearch() throws IOException {
		//1.创建搜索请求对象、创建构造器对象
		SearchRequest searchRequest = new SearchRequest("test1");

		//2.封装这两个对象
		SearchSourceBuilder searchSourceBuildersourceBuilder = new SearchSourceBuilder();  //搜索条件构造器
			//QueryBuilders.termQuery 精确匹配
			//QueryBuilders.matchAllQuery() 匹配所有
		TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "morning");
		//MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();
		searchSourceBuildersourceBuilder.query(termQueryBuilder);
		searchSourceBuildersourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
		searchSourceBuildersourceBuilder.from(0); //分页
		searchSourceBuildersourceBuilder.size(3); //分页

		searchRequest.source(searchSourceBuildersourceBuilder);

		//3.client发起搜索请求
		SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
		System.out.println(JSON.toJSONString(searchResponse.getHits()) );

	}
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于Spring Boot集成Elasticsearch Java API Client,你可以按照以下步骤进行操作: 1. 首先,你需要在你的项目中添加Elasticsearch的依赖。可以在官方文档()中找到相关的依赖信息。 2. 接下来,你可以通过创建低级别的RestClient来连接到Elasticsearch。你可以使用以下代码片段来创建一个基于RestClient的传输对象: ```java RestClient restClient = RestClient.builder(new HttpHost("localhost", 9200)).build(); ElasticsearchTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper()); ElasticsearchClient client = new ElasticsearchClient(transport); ``` 3. 一旦你建立了与Elasticsearch的连接,你就可以使用ElasticsearchClient来执行各种操作。比如,你可以使用以下代码来创建一个索引: ```java CreateIndexResponse createIndexResponse = client.indices().create(c -> c.index("newapi")); ``` 在这个例子中,"newapi"是你要创建的索引的名称。 所以,以上是使用Spring Boot集成Elasticsearch Java API Client的基本步骤。你可以根据你的具体需求进一步使用ElasticsearchAPI来完成其他操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [springboo整合elasticSearch8 java client api](https://blog.csdn.net/A434534658/article/details/125239480)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值