Elasticsearch 笔记(3)

Elasticsearch整合 springboot

一 .导入依赖

在这里插入图片描述

		<!-- es -->
		<dependency>
			<groupId>org.elasticsearch.client</groupId>
			<artifactId>elasticsearch-rest-high-level-client</artifactId>
			<version>7.4.2</version>
			<exclusions>
				<exclusion>
					<groupId>org.elasticsearch</groupId>
					<artifactId>elasticsearch</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.elasticsearch</groupId>
			<artifactId>elasticsearch</artifactId>
			<version>7.4.2</version>
		</dependency>

        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.4.2</version>
        </dependency>

二. 创建配置文件


@Configuration
public class ESConfig {
    public final static RequestOptions requestOptions;
    static {
        RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
        requestOptions = builder.build();
    }
    @Bean
    public RestHighLevelClient esClient(){
        RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.1.11", 9200, "http")));
        return client;
    }

}

三. 测试保存

    @Autowired
    private RestHighLevelClient esClient;
  // 测试保存
    public void testSaveESData() throws IOException {
        // 指定索引  没有就会创建
        IndexRequest indexRequest = new IndexRequest("users");
        // 
        indexRequest.source(JSON.toJSONString(new User("海洋","男")), XContentType.JSON);
        esClient.index(indexRequest,ESConfig.requestOptions);
    }

四. 测试聚合搜索

   @Autowired
    private RestHighLevelClient esClient;
 // 测试搜索
    public void testSearch() throws IOException {
        SearchRequest searchRequest = new SearchRequest();
        // 指定索引
        searchRequest.indices("bank");
        // 创建搜索 条件
        SearchSourceBuilder searchBuilder = new SearchSourceBuilder();
        // 搜索出 address字段里面包含 mill的
        searchBuilder.query(QueryBuilders.matchQuery("address","mill"));
        // 根据年龄的分布进行聚合
        searchBuilder.aggregation(AggregationBuilders.terms("ageAgg").field("age").size(10));
        //  获取他们的平均工资
        searchBuilder.aggregation(AggregationBuilders.avg("balanceAvg").field("balance"));
        searchRequest.source(searchBuilder);
        
        SearchResponse search = esClient.search(searchRequest, ESConfig.requestOptions);
        System.out.println(search);
        // 获取命中的数据
        SearchHits hits = search.getHits();
        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
        }
        // 获取聚合的信息
        Aggregations aggregations = search.getAggregations();
        Terms ageAgg = aggregations.get("ageAgg");
        for (Terms.Bucket bucket : ageAgg.getBuckets()) {
            System.out.println("年龄:" + bucket.getKeyAsString() + ",数量:" + bucket.getDocCount());
        }
        Avg balanceAvg = aggregations.get("balanceAvg");
        System.out.println("平均工资" + balanceAvg.getValue());
    }

猜你喜欢

转载自blog.csdn.net/haiyanghan/article/details/111306882