环境:springboot2.3.10 + elasticsearch7.8.0
索引操作
高级别的Rest客户端对象
private static RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http"))) ;
1、创建索引
public static void createIndex(String index) throws Exception {
CreateIndexRequest request = new CreateIndexRequest(index) ;
CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT) ;
boolean ack = response.isAcknowledged() ;
System.out.println("ack = " + ack) ;
}
2、查看索引
public static void viewIndex(String index) throws Exception {
GetIndexRequest request = new GetIndexRequest(index) ;
GetIndexResponse response = client.indices().get(request, RequestOptions.DEFAULT) ;
System.out.println("aliases: " + response.getAliases() + "\n"
+ "mappings: " + response.getMappings() + "\n"
+ "settings: " + response.getSettings()) ;
}
3、删除索引
public static void deleteIndex(String index) throws Exception {
DeleteIndexRequest request = new DeleteIndexRequest(index) ;
AcknowledgedResponse response = client.indices().delete(request, RequestOptions.DEFAULT) ;
System.out.println("ack: " + response.isAcknowledged()) ;
}
文档操作
private static RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http"))) ;
1、创建文档
public static void createDoc(String index, Users users) throws Exception {
IndexRequest request = new IndexRequest() ;
// 设置索引及唯一标识
request.index(index).id("1001") ;
ObjectMapper objectMapper = new ObjectMapper() ;
String jsonString = objectMapper.writeValueAsString(users) ;
// 添加文档数据及数据格式
request.source(jsonString, XContentType.JSON) ;
IndexResponse response = client.index(request, RequestOptions.DEFAULT) ;
System.out.println("_index: " + response.getIndex() + "\n"
+ "_id: " + response.getId() + "\n"
+ "_result: " + response.getResult()) ;
}
2、更新文档
public static void updateDoc(String index, String id) throws Exception {
UpdateRequest request = new UpdateRequest() ;
// 配置修改参数
request.index(index).id(id) ;
Map<String, Object> source = new HashMap<>() ;
source.put("sex", "女") ;
request.doc(source, XContentType.JSON) ;
UpdateResponse response = client.update(request, RequestOptions.DEFAULT) ;
System.out.println("_index: " + response.getIndex() + "\n"
+ "_id: " + response.getId() + "\n"
+ "_result: " + response.getResult()) ;
}
3、查询文档
public static void viewDoc(String index, String id) throws Exception {
GetRequest request = new GetRequest().index(index).id(id) ;
GetResponse response = client.get(request, RequestOptions.DEFAULT) ;
System.out.println("_index: " + response.getIndex() + "\n"
+ "_type: " + response.getType() + "\n"
+ "_id: " + response.getId() + "\n"
+ "source: " + response.getSourceAsString()) ;
}
4、删除文档
public static void deleteIndex(String index, String id) throws Exception {
DeleteRequest request = new DeleteRequest().index(index).id(id) ;
DeleteResponse response = client.delete(request, RequestOptions.DEFAULT) ;
System.out.println(response.toString()) ;
}
5、批量操作
public static void batchOperator(String index) throws Exception {
BulkRequest request = new BulkRequest() ;
request.add(new IndexRequest().index(index).id("1002").source(XContentType.JSON, "name","老六", "sex", "男", "age", 20)) ;
request.add(new IndexRequest().index(index).id("1003").source(XContentType.JSON, "name","外网", "sex", "女", "age", 10)) ;
request.add(new IndexRequest().index(index).id("1004").source(XContentType.JSON, "name","莉莉", "sex", "女", "age", 35)) ;
BulkResponse response = client.bulk(request, RequestOptions.DEFAULT) ;
System.out.println("took: " + response.getTook() + "\n"
+ "items: " + new ObjectMapper().writeValueAsString(response.getItems())) ;
}
6、高级查询
public static void highSearch(String index) throws Exception {
SearchRequest request = new SearchRequest().indices(index) ;
SearchSourceBuilder builder = new SearchSourceBuilder() ;
builder.query(QueryBuilders.matchAllQuery()) ;
request.source(builder) ;
SearchResponse response = client.search(request, RequestOptions.DEFAULT) ;
SearchHits hits = response.getHits() ;
System.out.println("took: " + response.getTook() + "\n"
+ "timeout: " + response.isTimedOut() + "\n"
+ "total: " + hits.getTotalHits() + "\n"
+ "MaxScore: " + hits.getMaxScore()) ;
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString()) ;
}
}
7、term精确查询
public static void highTermSearch(String index) throws Exception {
SearchRequest request = new SearchRequest().indices(index) ;
SearchSourceBuilder builder = new SearchSourceBuilder() ;
builder.query(QueryBuilders.termQuery("age", "20")) ;
request.source(builder) ;
SearchResponse response = client.search(request, RequestOptions.DEFAULT) ;
SearchHits hits = response.getHits() ;
System.out.println("took: " + response.getTook() + "\n"
+ "timeout: " + response.isTimedOut() + "\n"
+ "total: " + hits.getTotalHits() + "\n"
+ "MaxScore: " + hits.getMaxScore()) ;
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString()) ;
}
}
8、分页查询
public static void highPagingSearch(String index) throws Exception {
SearchRequest request = new SearchRequest().indices(index) ;
SearchSourceBuilder builder = new SearchSourceBuilder() ;
builder.query(QueryBuilders.matchAllQuery()) ;
builder.from(1) ;
builder.size(2) ;
request.source(builder) ;
SearchResponse response = client.search(request, RequestOptions.DEFAULT) ;
SearchHits hits = response.getHits() ;
System.out.println("took: " + response.getTook() + "\n"
+ "timeout: " + response.isTimedOut() + "\n"
+ "total: " + hits.getTotalHits() + "\n"
+ "MaxScore: " + hits.getMaxScore()) ;
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString()) ;
}
}
9、分页&排序查询
public static void highPagingAndSortSearch(String index) throws Exception {
SearchRequest request = new SearchRequest().indices(index) ;
SearchSourceBuilder builder = new SearchSourceBuilder() ;
builder.query(QueryBuilders.matchAllQuery()) ;
builder.from(0) ;
builder.size(20) ;
builder.sort("age", SortOrder.ASC) ;
request.source(builder) ;
SearchResponse response = client.search(request, RequestOptions.DEFAULT) ;
SearchHits hits = response.getHits() ;
System.out.println("took: " + response.getTook() + "\n"
+ "timeout: " + response.isTimedOut() + "\n"
+ "total: " + hits.getTotalHits() + "\n"
+ "MaxScore: " + hits.getMaxScore()) ;
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString()) ;
}
}
9、分页&排序&过滤字段查询
public static void highPagingAndSortAndFilterFieldSearch(String index) throws Exception {
SearchRequest request = new SearchRequest().indices(index) ;
SearchSourceBuilder builder = new SearchSourceBuilder() ;
builder.query(QueryBuilders.matchAllQuery()) ;
builder.from(0) ;
builder.size(20) ;
builder.sort("age", SortOrder.ASC) ;
String[] includes = {"name"} ;
String[] excludes = {} ;
builder.fetchSource(includes, excludes) ;
request.source(builder) ;
SearchResponse response = client.search(request, RequestOptions.DEFAULT) ;
SearchHits hits = response.getHits() ;
System.out.println("took: " + response.getTook() + "\n"
+ "timeout: " + response.isTimedOut() + "\n"
+ "total: " + hits.getTotalHits() + "\n"
+ "MaxScore: " + hits.getMaxScore()) ;
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString()) ;
}
}
10、范围查询
public static void highBoolSearch(String index) throws Exception {
SearchRequest request = new SearchRequest().indices(index) ;
SearchSourceBuilder builder = new SearchSourceBuilder() ;
builder.query(QueryBuilders.matchAllQuery()) ;
builder.from(0) ;
builder.size(20) ;
builder.sort("age", SortOrder.ASC) ;
RangeQueryBuilder rangeBuilder = QueryBuilders.rangeQuery("age");
rangeBuilder.gte(15) ;
rangeBuilder.lte(30) ;
builder.query(rangeBuilder) ;
request.source(builder) ;
SearchResponse response = client.search(request, RequestOptions.DEFAULT) ;
SearchHits hits = response.getHits() ;
System.out.println("took: " + response.getTook() + "\n"
+ "timeout: " + response.isTimedOut() + "\n"
+ "total: " + hits.getTotalHits() + "\n"
+ "MaxScore: " + hits.getMaxScore()) ;
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString()) ;
}
}
11、高亮查询
public static void highHighLightSearch(String index) throws Exception {
SearchRequest request = new SearchRequest().indices(index) ;
SearchSourceBuilder builder = new SearchSourceBuilder() ;
builder.query(QueryBuilders.matchQuery("name", "莉莉")) ;
HighlightBuilder highLightBuilder = new HighlightBuilder() ;
highLightBuilder.preTags("<font color='red'>") ;
highLightBuilder.postTags("</font>") ;
highLightBuilder.field("name") ;
builder.highlighter(highLightBuilder) ;
request.source(builder) ;
SearchResponse response = client.search(request, RequestOptions.DEFAULT) ;
SearchHits hits = response.getHits() ;
System.out.println("took: " + response.getTook() + "\n"
+ "timeout: " + response.isTimedOut() + "\n"
+ "total: " + hits.getTotalHits() + "\n"
+ "MaxScore: " + hits.getMaxScore()) ;
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString() + "\n"
+ "highlight: " + hit.getHighlightFields()) ;
}
}
12、聚合查询
public static void highAggsSearch(String index) throws Exception {
SearchRequest request = new SearchRequest().indices(index) ;
SearchSourceBuilder builder = new SearchSourceBuilder() ;
builder.aggregation(AggregationBuilders.avg("avg_age").field("age")) ;
request.source(builder) ;
SearchResponse response = client.search(request, RequestOptions.DEFAULT) ;
SearchHits hits = response.getHits() ;
System.out.println("took: " + response.getTook() + "\n"
+ "timeout: " + response.isTimedOut() + "\n"
+ "total: " + hits.getTotalHits() + "\n"
+ "MaxScore: " + hits.getMaxScore()) ;
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString()) ;
}
System.out.println(((ParsedAvg)response.getAggregations().iterator().next()).getValue()) ;
}
原文:https://www.toutiao.com/i6953152043339006468/
完毕!!!
给个关注+转发呗谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/80024.html