您当前的位置: 首页 >  ar

星夜孤帆

暂无认证

  • 4浏览

    0关注

    626博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

SpringBoot整合ElasticSearch

星夜孤帆 发布时间:2021-03-16 22:58:42 ,浏览量:4

一、SpringBoot整合ElasticSearch

ElasticSearch官网

1.找到原生的依赖

2.找对象

二、搭建模块

三、版本分析

一定要保证我们导入的依赖和我们的ES版本一致

四、ElasticSearch API测试


	4.0.0
	
		org.springframework.boot
		spring-boot-starter-parent
		2.2.5.RELEASE
		 
	
	com.jak
	jak-es-api
	0.0.1-SNAPSHOT
	jak-es-api
	Demo project for Spring Boot
	
		1.8
		
		7.4.2
	
	
		
			com.alibaba
			fastjson
			1.2.62
		
		
		
			org.springframework.boot
			spring-boot-starter-data-elasticsearch
		
		
			org.springframework.boot
			spring-boot-starter-web
		

		
			org.springframework.boot
			spring-boot-devtools
			runtime
			true
		
		
			org.springframework.boot
			spring-boot-configuration-processor
			true
		
		
			org.projectlombok
			lombok
			true
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
			
				
					org.junit.vintage
					junit-vintage-engine
				
			
		
	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
				
					
						
							org.springframework.boot
							spring-boot-configuration-processor
						
						
							org.projectlombok
							lombok
						
					
				
			
		
	


 

@Configuration //xml
public class ElasticSearchConfig {

    @Bean
    public RestHighLevelClient restHighLevelClient() {
        HttpHost http = new HttpHost("192.168.56.10", 9200, "http");
        RestClientBuilder builder = RestClient.builder(http);
        RestHighLevelClient client = new RestHighLevelClient(builder);
        return client;
    }
}

@SpringBootTest
class JakEsApiApplicationTests {

	// 面向对象来操作
	@Autowired
	@Qualifier("restHighLevelClient")
	private RestHighLevelClient client;

	// 测试索引的创建 Request put jak
	@Test
	void contextLoads() throws IOException {
		// 1.创建索引请求
		CreateIndexRequest request = new CreateIndexRequest("jak_index");
		// 2.客户端执行请求 IndicesClient,请求后获得响应
		CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);
		System.out.println(createIndexResponse);
	}

	// 测试获取索引,判断其是否存在
	@Test
	void testExistIndex() throws IOException {
		GetIndexRequest request = new GetIndexRequest("jak_index");
		boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
		System.out.println(exists);
	}

	// 测试删除索引
	@Test
	void testDeleteIndex() throws IOException {
		DeleteIndexRequest request = new DeleteIndexRequest("jak");
		//删除
		AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);
		System.out.println(delete.isAcknowledged());
	}

	//测试添加文档
	@Test
	void testAddDocument() throws IOException {
		// 创建对象
		User user = new User("jak", 18);
		// 创建请求
		IndexRequest request = new IndexRequest("jak_index");

		//规则 put /jak_index/_doc/1
		request.id("1");
		request.timeout(TimeValue.timeValueSeconds(1));
		request.timeout("1s");

		//将我们的数据放入请求 json
		request.source(JSON.toJSONString(user), XContentType.JSON);

		// 客户端发送请求,获取响应的结果
		IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
		System.out.println(indexResponse.toString());
		System.out.println(indexResponse.status());
	}

	// 获取文档,判断是否存在 get /index/doc/1
	@Test
	void testIsExists() throws IOException {
		GetRequest getRequest = new GetRequest("jak_index", "1");
		// 不获取返回的_source的上下文了
		getRequest.fetchSourceContext(new FetchSourceContext(false));
		getRequest.storedFields("_none_");

		boolean exists = client.exists(getRequest, RequestOptions.DEFAULT);
		System.out.println(exists);
	}

	// 获得文档的信息
	@Test
	void testGetDocument() throws IOException {
		GetRequest getRequest = new GetRequest("jak_index", "1");
		GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
		System.out.println(getResponse.getSourceAsString()); //打印文档的内容
		System.out.println(getResponse); // 返回的全部内容和命令是一样的
	}

	// 更新文档的信息
	@Test
	void testUpdateRequest() throws IOException {
		UpdateRequest updateRequest = new UpdateRequest("jak_index", "1");
		updateRequest.timeout("1s");
		User user = new User("jak", 25);
		updateRequest.doc(JSON.toJSONString(user), XContentType.JSON);

		UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);
		System.out.println(updateResponse.status());
	}

	// 删除文档记录
	@Test
	void testDeleteRequest() throws IOException {
		DeleteRequest request = new DeleteRequest("jak_index", "1");
		request.timeout("1s");
		DeleteResponse deleteResponse = client.delete(request, RequestOptions.DEFAULT);
		System.out.println(deleteResponse.status());
	}

	// 特殊的,真的项目一般都会批量插入数据
	@Test
	void testBulkRequest() throws IOException {
		BulkRequest bulkRequest = new BulkRequest();
		bulkRequest.timeout("10s");

		ArrayList userList = new ArrayList();
		userList.add(new User("jak1", 1));
		userList.add(new User("jak2", 1));
		userList.add(new User("jak3", 1));
		userList.add(new User("jak4", 1));

		// 批处理请求
		for (int i = 0; i < userList.size(); i++) {
			// 批量更新和批量删除,就在这里修改对应的请求就可以了
			bulkRequest.add(new IndexRequest("jak_index").id("" + (i + 1)).source(JSON.toJSONString(userList.get(i)), XContentType.JSON));
		}
		BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);
		System.out.println(bulkResponse.hasFailures()); // 是否失败,返回false 代表成功
	}

	// 查询

	/**
	 * SearchRequest 搜索请求
	 * SearchSourceBuilder 条件构造
	 * HighlightBuilder 构建高亮
	 * TermQueryBuilder 精确查询
	 * MatchAllQueryBuilder
	 * xxx QueryBuilder对应我们刚才看到的命令
	 * @throws IOException
	 */
	@Test
	void testSearch() throws IOException {
		SearchRequest searchRequest = new SearchRequest("jak_index");
		//构建搜索条件
		SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();

		//查询条件,我们可以使用QueryBuilders工具来实现
		//QueryBuilders.termQuery 精确
		//QueryBuilers.matchAllQuery() 匹配所有
		TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "jak1");
		MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();
		sourceBuilder.query(termQueryBuilder);
		sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));

		searchRequest.source(sourceBuilder);

		SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
		System.out.println(JSON.toJSONString(searchResponse.getHits()));

		System.out.println("**************************************************");
		for (SearchHit documentFields : searchResponse.getHits().getHits()) {
			System.out.println(documentFields.getSourceAsMap());
		}
	}

}

ElasticSearch: http://192.168.56.10:9200/

Kibana: http://192.168.56.10:5601/

gitee源码,视频教程

关注
打赏
1636984416
查看更多评论
立即登录/注册

微信扫码登录

0.0376s