栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot整合es

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot整合es

1、导入依赖

这里的版本要和所按照的ELK版本匹配。


        
            org.elasticsearch.client
            elasticsearch-rest-high-level-client
            7.6.2
        
        
            org.elasticsearch.client
            elasticsearch-rest-client
            7.15.2
        
        
            org.elasticsearch
            elasticsearch
            7.15.2
        
        
            org.elasticsearch.client
            elasticsearch-rest-high-level-client
            7.15.2
        

在spring-boot-dependencies中所依赖的ELK版本位6.8.7
配置类:

@Configuration
public class GulimallElasticSearchConfig {

	// @Bean
	// public RestHighLevelClient esRestClient(){
	//     RestHighLevelClient client = new RestHighLevelClient(
	//             RestClient.builder(new HttpHost("192.168.137.14", 9200, "http")));
	//     return  client;
	// }
	public static final RequestOptions COMMON_OPTIONS;
	static {
		RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
		// builder.addHeader("Authorization", "Bearer " + TOKEN);
		// builder.setHttpAsyncResponseConsumerFactory(
		//         new HttpAsyncResponseConsumerFactory
		//                 .HeapBufferedResponseConsumerFactory(30 * 1024 * 1024 * 1024));
		COMMON_OPTIONS = builder.build();
	}
	@Bean
	public RestHighLevelClient esRestClient(){
		RestHighLevelClient client = new RestHighLevelClient(
				RestClient.builder(new HttpHost("101.42.221.186", 9200, "http")));
		return  client;
	}

}

测试类;

	@Test
	public void indexData() throws IOException {
		IndexRequest indexRequest = new IndexRequest ("users");
		Product product = new Product();
		product.setName( "liuyang" );
		product.setStock( 11);
		product.setCategorylevelthreeId( 22 );
		String jsonString = JSON.toJSONString(product);
		//设置要保存的内容
		indexRequest.source(jsonString, XContentType.JSON);
		//执行创建索引和保存数据
		IndexResponse index = client.index(indexRequest, GulimallElasticSearchConfig.COMMON_OPTIONS);
		System.out.println(index);

	}
}


取出数据;

	@Test
	public void searchData() throws IOException {
		GetRequest getRequest = new GetRequest(
				"users",
				"ADtOV4EBm4ZP2m-Y5ZLk");

		GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
		System.out.println(getResponse);
		String index = getResponse.getIndex();
		System.out.println(index);
		String id = getResponse.getId();
		System.out.println(id);
		if (getResponse.isExists()) {
			long version = getResponse.getVersion();
			System.out.println(version);
			String sourceAsString = getResponse.getSourceAsString();
			System.out.println(sourceAsString);
			Map sourceAsMap = getResponse.getSourceAsMap();
			System.out.println(sourceAsMap);
			byte[] sourceAsBytes = getResponse.getSourceAsBytes();
		} else {

		}
	}
	@Test
	public void searchData1() throws IOException {
		//1. 创建检索请求
		SearchRequest searchRequest = new SearchRequest();

		//1.1)指定索引
		searchRequest.indices("bank");
		//1.2)构造检索条件
		SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
		sourceBuilder.query( QueryBuilders.matchQuery("address","Mill"));

		//1.2.1)按照年龄分布进行聚合
		TermsAggregationBuilder ageAgg= AggregationBuilders.terms("ageAgg").field("age").size(10);
		sourceBuilder.aggregation(ageAgg);

		//1.2.2)计算平均年龄
		AvgAggregationBuilder ageAvg = AggregationBuilders.avg("ageAvg").field("age");
		sourceBuilder.aggregation(ageAvg);
		//1.2.3)计算平均薪资
		AvgAggregationBuilder balanceAvg = AggregationBuilders.avg("balanceAvg").field("balance");
		sourceBuilder.aggregation(balanceAvg);

		System.out.println("检索条件:"+sourceBuilder);
		searchRequest.source(sourceBuilder);
		//2. 执行检索
		SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
		System.out.println("检索结果:"+searchResponse);

		//3. 将检索结果封装为Bean
		SearchHits hits = searchResponse.getHits();
		SearchHit[] searchHits = hits.getHits();
		for (SearchHit searchHit : searchHits) {
			String sourceAsString = searchHit.getSourceAsString();
			Product product = JSON.parseObject( sourceAsString, Product.class );
			System.out.println(product);
		}
		//4. 获取聚合信息
		Aggregations aggregations = searchResponse.getAggregations();

		Terms ageAgg1 = aggregations.get("ageAgg");

		for (Terms.Bucket bucket : ageAgg1.getBuckets()) {
			String keyAsString = bucket.getKeyAsString();
			System.out.println("年龄:"+keyAsString+" ==> "+bucket.getDocCount());
		}
		Avg ageAvg1 = aggregations.get("ageAvg");
		System.out.println("平均年龄:"+ageAvg1.getValue());

		Avg balanceAvg1 = aggregations.get("balanceAvg");
		System.out.println("平均薪资:"+balanceAvg1.getValue());


	}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/970222.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号