org.elasticsearch.client
elasticsearch-rest-high-level-client
7.6.2
需要将 spring-boot-starter-parent 父依赖中的 spring-boot-dependencies
@Configuration
public class ElasticSearchConfig {
// 注册 rest高级客户端
@Bean
public RestHighLevelClient restHighLevelClient(){
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("192.168.56.10",9200,"http")
)
);
return client;
}
}
new HttpHost("192.168.56.10",9200,"http")对应自己的ip地址,端口号,协议。
所有操作的前提是注入 RestHighLevelClient restHighLevelClient;
@Test
public void createIndex() throws IOException {
CreateIndexRequest createIndexRequest =new CreateIndexRequest("es_index");
CreateIndexResponse createIndexResponse =restHighLevelClient.indices().create(createIndexRequest, RequestOptions.DEFAULT);
System.out.println(createIndexResponse.isAcknowledged()); //查看是否创建成功
System.out.println(createIndexResponse) ; //查看返回对象
restHighLevelClient.close();
}
kibana查看结果
@Test
public void indexIsExists() throws IOException {
GetIndexRequest getIndexRequest =new GetIndexRequest("es_index");
boolean exists = restHighLevelClient.indices().exists(getIndexRequest, RequestOptions.DEFAULT);
System.out.println(exists);//索引是否存在
restHighLevelClient.close();
}
控制台查看结果 返回true即索引存在
@Test
public void deleteIndex() throws IOException {
DeleteIndexRequest deleteIndexRequest =new DeleteIndexRequest("es_index");
AcknowledgedResponse acknowledgedResponse = restHighLevelClient.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);
System.out.println(acknowledgedResponse.isAcknowledged());//是否删除成功
restHighLevelClient.close();
}
kibana查看效果
@Test
public void addDoc() throws IOException {
//创建user对象
User user = new User(18, "james");
//创建索引请求
IndexRequest indexRequest = new IndexRequest("user_index");
//设置文档id
indexRequest.id("1");
indexRequest.timeout(TimeValue.timeValueMillis(1000));
//把数据放入请求中
indexRequest.source(JSON.toJSONString(user), XContentType.JSON);
//es客户端发送请求
IndexResponse response = restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);
System.out.println(response.status());//获取响应数据状态-->CREATED
System.out.println(response);//查看内容
}
@Test
public void getDoc() throws IOException {
GetRequest getRequest=new GetRequest("user_index","1");
GetResponse response = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);
System.out.println(response.getSourceAsMap());//打印文档内容map {name=james, age=18}
restHighLevelClient.close();
}
public void existsDoc() throws IOException {
GetRequest getRequest=new GetRequest("user_index","1");
boolean exists = restHighLevelClient.exists(getRequest, RequestOptions.DEFAULT);
System.out.println(exists);//true
}
@Test
public void updateDoc() throws IOException {
UpdateRequest updateRequest = new UpdateRequest("user_index","1");
User user=new User(24,"kobe");
updateRequest.doc(JSON.toJSONString(user),XContentType.JSON);
UpdateResponse response = restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);
System.out.println(response.status());//OK
restHighLevelClient.close();
}
@Test
public void deleteDoc() throws IOException {
DeleteRequest deleteRequest = new DeleteRequest("user_index","1");
DeleteResponse response = restHighLevelClient.delete(deleteRequest, RequestOptions.DEFAULT);
System.out.println(response.status());//ok
}
@Test
public void searchTest() throws IOException {
//创建查询请求对象
SearchRequest searchRequest=new SearchRequest();
//指定索引
searchRequest.indices("user_index");
//构造搜素条件
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//精确查询
//TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "liuyou");
//匹配查询
MatchQueryBuilder matchAllQueryBuilder = QueryBuilders.matchQuery("name","james");
//设置高亮
searchSourceBuilder.highlighter(new HighlightBuilder());
//构造条件
searchSourceBuilder.query(matchAllQueryBuilder);
//添加条件请求
searchRequest.source(searchSourceBuilder);
//客户端查询
SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
SearchHits hits = search.getHits();
for (SearchHit hit : hits.getHits()) {
System.out.println(hit.getSourceAsMap());
}
}
@Test
public void bulkTest() throws IOException {
BulkRequest bulkRequest = new BulkRequest();
ArrayList users = new ArrayList<>();
users.add(new User(1, "derick rose"));
users.add(new User(2, "john wall"));
users.add(new User(3, "brad bill"));
users.add(new User(6, "james wall"));
// 批量请求处理
for (int i = 0; i < users.size(); i++) {
bulkRequest.add(
// 这里是数据信息
new IndexRequest("nba_index")
.id("" + (i + 1)) // 没有设置id 会自定生成一个随机id
.source(JSON.toJSONString(users.get(i)), XContentType.JSON)
);
}
BulkResponse bulk = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
System.out.println(bulk.status());// ok
}
@Test
public void aggregationTest() throws IOException {
//创建索引请求
SearchRequest request = new SearchRequest();
request.indices("nba_index");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("name", "wall");
//构造检索条件
searchSourceBuilder.query(matchQueryBuilder);
//聚合函数聚合名字ageAgg field:属性 按照年龄的值分布聚合
TermsAggregationBuilder ageAgg = AggregationBuilders.terms("ageAgg").field("age").size(10);
searchSourceBuilder.aggregation(ageAgg);
//计算平均薪资聚合
AvgAggregationBuilder ageAvg1 = AggregationBuilders.avg("ageAvg").field("age");
searchSourceBuilder.aggregation(ageAvg1);
System.out.println("检索内容:" + searchSourceBuilder.toString());
request.source(searchSourceBuilder);
//执行检索
SearchResponse searchResponse = restHighLevelClient.search(request, RequestOptions.DEFAULT);
SearchHits hits = searchResponse.getHits();
hits.forEach(hit -> {
String s = hit.getSourceAsString();
System.out.println("分片信息:" + s);
//分片信息:{"age":2,"name":"john wall"}
//分片信息:{"age":6,"name":"james wall"}
}
);
//获取检索到的分析信息
Aggregations aggregations = searchResponse.getAggregations();
Terms ageAvg = aggregations.get("ageAgg");
for (Terms.Bucket bucket : ageAvg.getBuckets()
) {
String keyAsString = bucket.getKeyAsString();
System.out.println("年龄" + keyAsString);//年龄2 年龄6
}
Avg aggregation = aggregations.get("ageAvg");
System.out.println("平均年龄:" + aggregation.getValue());//平均年龄:4.0
}
留言与评论(共有 0 条评论) “” |