前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >StringBoot集成Elasticsearch

StringBoot集成Elasticsearch

作者头像
暴躁的程序猿
发布2022-03-23 20:11:32
4030
发布2022-03-23 20:11:32
举报
文章被收录于专栏:阿飞的学习记录

官方文档 此处

本文使用Elasticsearch版本为7.8.0

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

创建一个项目 勾选es依赖

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

编译版本一定是8以上

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

默认集成的版本 跟我们本地安装的版本不一样

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

自己指定跟自己es版本匹配即可

代码语言:javascript
复制
<properties>
		<java.version>1.8</java.version>
		<!--自己定义es版本-->
        <elasticsearch.version>7.8.0</elasticsearch.version>
	</properties>

本文的所有依赖

代码语言:javascript
复制
	<properties>
		<java.version>1.8</java.version>
		<!--自己定义es版本-->
        <elasticsearch.version>7.8.0</elasticsearch.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<!--json-->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.76</version>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

编写一个配置类创建连接es的客户端

代码语言:javascript
复制
@Configuration
public class ElasticSearchConfig {

    @Bean
    public RestHighLevelClient restHighLevelClient() {
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        //配置客户端连接es信息
                        new HttpHost("localhost", 9200, "http")
                ));
        return client;
    }

}

测试索引操作

测试创建索引

代码语言:javascript
复制
@SpringBootTest
class FeiEsApiApplicationTests {

	@Autowired
	private RestHighLevelClient restHighLevelClient;

	/**
	 * 测试索引的创建
	 */
	@SneakyThrows
	@Test
	void testCreate(){
		//1.创建索引请求
		CreateIndexRequest createIndexRequest = new CreateIndexRequest("fei_index");
        //2.客户端执行创建请求
		CreateIndexResponse response = restHighLevelClient
				.indices()
				.create(createIndexRequest, RequestOptions.DEFAULT);
		System.out.println(response);
	}


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

获取索引

代码语言:javascript
复制
/**
	 * 测试获取索引
	 */
	@SneakyThrows
	@Test
	void testGetIndex()  {
		GetIndexRequest request = new GetIndexRequest("fei_index");
		boolean exists = restHighLevelClient
				.indices()
				//判断索引是否存在
				.exists(request, RequestOptions.DEFAULT);
		System.out.println(exists);
	}
在这里插入图片描述
在这里插入图片描述

删除索引

代码语言:javascript
复制
@SneakyThrows
	@Test
	void testDel(){
		//创建删除索引请求
		DeleteIndexRequest request = new DeleteIndexRequest("fei_index");
		//执行删除
		AcknowledgedResponse response = restHighLevelClient
				.indices()
				.delete(request, RequestOptions.DEFAULT);
		System.out.println(request);
	}
在这里插入图片描述
在这里插入图片描述

文档操作

添加文档

代码语言:javascript
复制
/**
	 * 测试添加文档
	 */
	@SneakyThrows
	@Test
	void testAddDocument(){
    	//创建对象
		User user = new User("飞飞",24);
		//创建请求
		IndexRequest request = new IndexRequest("fei_index");
        //设置规则
		request.id("1");
		request.timeout(TimeValue.timeValueSeconds(1));
		//将我们的数据放入请求  Json
		request.source(JSON.toJSONString(user), XContentType.JSON);
	    //客户端发送请求  获取响应结果
		IndexResponse response = restHighLevelClient.index(request, RequestOptions.DEFAULT);
		System.out.println(response.toString());
	}
在这里插入图片描述
在这里插入图片描述

获取文档

代码语言:javascript
复制
/**
	 * 获取文档  判断是否存在
	 */
	@SneakyThrows
	@Test
	void testIsGet(){
		GetRequest request = new GetRequest("fei_index","1");
		//不获取返回的_source 上下文了
		request.fetchSourceContext(new FetchSourceContext(false));
		request.storedFields("_none_");
        //判断是否存在
		boolean exists = restHighLevelClient.exists(request, RequestOptions.DEFAULT);
		System.out.println(exists);
	}
在这里插入图片描述
在这里插入图片描述

获取文档内容

代码语言:javascript
复制
/**
	 * 获取文档信息
	 */
	@SneakyThrows
	@Test
	void testGetDocument(){
		 GetRequest request = new GetRequest("fei_index", "1");
		 //获取文档信息
		 GetResponse response = restHighLevelClient.get(request, RequestOptions.DEFAULT);
		 //打印文档内容
		 System.out.println(response.getSourceAsString());

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

更新文档信息

代码语言:javascript
复制
//更新文档信息
	@Test
	@SneakyThrows
	void testGetUpd(){
		UpdateRequest request = new UpdateRequest("fei_index","1");
		//设置超时时间
		request.timeout("1s");
		User user = new User("阿飞", 18);
		//转成json数据    数据的类型
		request.doc(JSON.toJSONString(user),XContentType.JSON);
		//执行更新打印结果
		UpdateResponse update = restHighLevelClient.update(request, RequestOptions.DEFAULT);
		System.out.println(update);
	}

删除文档信息

代码语言:javascript
复制
/**
	 * 删除文档信息
	 */
	@SneakyThrows
	@Test
	void testDelDoc(){
		//创建删除请求  删除 fei_index索引的id为二的文档
		DeleteRequest request = new DeleteRequest("fei_index","2");
		DeleteResponse delete = restHighLevelClient.delete(request, RequestOptions.DEFAULT);
		System.out.println(delete);
	}
在这里插入图片描述
在这里插入图片描述

批量操作

代码语言:javascript
复制
/**
	 * 特殊的,   批量插入数据
	 */
	@SneakyThrows
	@Test
	void testBulkReq(){
		//创建批量请求
		BulkRequest request = new BulkRequest();
		//设置超时时间
		request.timeout("5s");
		ArrayList<User> list = new ArrayList<>();
		list.add(new User("张三",20));
		list.add(new User("张四",21));
		list.add(new User("张五",22));
		list.add(new User("张六",23));
		list.add(new User("张七",24));

		for (int i = 0; i < list.size(); i++) {
			//插入和删除写对应的请求就可以了
			 request.add(new IndexRequest("fei_index")
			 .id(""+(i+1))
					 .source(JSON.toJSONString(list.get(i)),XContentType.JSON));
		}
		BulkResponse bulk = restHighLevelClient.bulk(request, RequestOptions.DEFAULT);
	}
在这里插入图片描述
在这里插入图片描述

查询

代码语言:javascript
复制
/**
	 * 查询
	 */
	@SneakyThrows
	@Test
	void testSearch(){
		SearchRequest request = new SearchRequest("fei_index");
		//构建搜索的条件      term精准匹配
		SearchSourceBuilder builder = new SearchSourceBuilder();
		TermQueryBuilder query = QueryBuilders.termQuery("name", "张三");
		builder.query(query);
		//分页
		builder.from(0);
		builder.size(3);
		builder.timeout(new TimeValue(60, TimeUnit.SECONDS));
	    //条件放入请求
		request.source(builder);
	    //执行
		SearchResponse search = restHighLevelClient.search(request, RequestOptions.DEFAULT);
		//打印结果
		System.out.println(JSON.toJSONString(search.getHits()));
	}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档