环境:springboot2.4.12 + elasticsearch7.8.0
Elasticsearch是一种开源的、分布式的、实时的搜索和分析引擎。它允许你存储,搜索和分析大量数据,通常用于为网站或应用程序提供强大的搜索功能。
Java API是Elasticsearch提供的官方客户端,它允许Java开发者轻松地与Elasticsearch服务器进行交互。下面是一些关于如何使用Java API来调用Elasticsearch的常用方法。
注意:这里为了方便使用springboot项目(避免还要单独引用其它包)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.8.0</version><!--$NO-MVN-MAN-VER$--></dependency><dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.8.0</version><!--$NO-MVN-MAN-VER$--></dependency>
高级别的Rest客户端对象
private static RestHighLevelClient client = new RestHighLevelClient(RestClient.builder( new HttpHost("localhost", 9200, "http"))) ;
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) ;}
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()) ;}
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"))) ;
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()) ;}
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()) ;}
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()) ;}
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()) ;}
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())) ;}
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()) ; }}
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()) ; }}
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()) ; }}
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()) ; }}
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()) ; }}
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()) ; }}
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()) ; }}
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()) ;}
public static void highGroupSearch(String index) throws Exception { SearchRequest request = new SearchRequest().indices(index) ; SearchSourceBuilder builder = new SearchSourceBuilder() ; builder.aggregation(AggregationBuilders.terms("age_groupby").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(response) ;}
完毕!!!
本文链接:http://www.28at.com/showinfo-26-12707-0.htmlElasticSearch Java API只需十招,轻松掌握变专家!
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
上一篇: 十个优秀的编程范式,你已经用过了几个?