1、导入maven
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>
2、编写配置,给容器中注入一个RestHighLevelClient,初始化
@Configuration
public class ElasticSearchConfig {
// 请求头设置
public static final RequestOptions COMMON_OPTIONS;
static {
RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
COMMON_OPTIONS = builder.build();
}
@Bean
public RestHighLevelClient esRestClient(){
RestClientBuilder builder = RestClient.builder(new HttpHost("192.168.0.24", 9200, "http"));
RestHighLevelClient client = new RestHighLevelClient(builder);
return client;
}
}
ElasticSearch的测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class ElasticSearchConfigTest {
@Autowired
private RestHighLevelClient client;
/**
* 存储数据
* @throws IOException
*/
@Test
public void indexData() throws IOException {
IndexRequest indexRequest = new IndexRequest("approval_list_zhc");
User user = new User();
user.setAge(1);
user.setEmail("1");
user.setName("zs");
user.setSalary(200);
indexRequest.source(JacksonUtils.obj2String(user), XContentType.JSON);
//执行操作
IndexResponse index = client.index(indexRequest, ElasticSearchConfig.COMMON_OPTIONS);
System.out.println("响应:" + index);
}
@Data
class User{
private String name;
private Integer age;
private Integer salary;
private String email;
}
@Test
public void searchData() throws IOException {
//1、创建检索条件
SearchRequest searchRequest = new SearchRequest();
//指定索引
searchRequest.indices("approval_list_zhc");
//封装检索条件
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
//构造检索条件
sourceBuilder.query(QueryBuilders.matchQuery("name","wangcai"));
sourceBuilder.from(0);
sourceBuilder.size(2);
sourceBuilder.sort("id", SortOrder.DESC);
//聚合
TermsAggregationBuilder ageAgg = AggregationBuilders.terms("ageAgg").field("age").size(10);
sourceBuilder.aggregation(ageAgg);
//求平均值
AvgAggregationBuilder salaryAvg = AggregationBuilders.avg("salaryAvg").field("salary");
sourceBuilder.aggregation(salaryAvg);
System.out.println("检索条件:" + sourceBuilder);
searchRequest.source(sourceBuilder);
//2、执行检索
SearchResponse searchResponse = client.search(searchRequest, ElasticSearchConfig.COMMON_OPTIONS);
//3、分析结果 searchResponse
SearchHits hits = searchResponse.getHits();
SearchHit[] searchHits = hits.getHits();
for (SearchHit hit : searchHits) {
String sourceAsString = hit.getSourceAsString();
System.out.println("sourceAsString:" + sourceAsString);
}
Aggregations aggregations = searchResponse.getAggregations();
Terms ageAgg1 = aggregations.get("ageAgg");
for (Terms.Bucket bucket : ageAgg1.getBuckets()) {
String keyAsString = bucket.getKeyAsString();
System.out.println("年龄:" + keyAsString);
}
Avg salaryAvg1 = aggregations.get("salaryAvg");
System.out.println("平均薪资:" + salaryAvg1.getValue());
}
@Test
public void buildSearchRequest() throws IOException {
//1、创建检索条件
SearchRequest searchRequest = new SearchRequest();
searchRequest.indices("approval_list_zhc");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
// 构建bool查询
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
boolQuery.must(QueryBuilders.matchQuery("name","zs"));
boolQuery.filter(QueryBuilders.termQuery("age",1));
sourceBuilder.query(boolQuery);
searchRequest.source(sourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, ElasticSearchConfig.COMMON_OPTIONS);
SearchHits hits = searchResponse.getHits();
for (SearchHit hit : hits) {
String sourceAsString = hit.getSourceAsString();
System.out.println(sourceAsString);
}
}
@Test
public void contextLoads(){
System.out.println(client);
}
}