RestHighLevelClient整理
1. 创建索引
CreateIndexRequest request = new CreateIndexRequest(indexName) ;
request.settings(Settings.builder().put("index.number_of_shards" , 1).put("index.number_of_replicas" , 1));
Map<String,Object> map = new HashMap<>(16) ;
Map<String,Object> properties = new HashMap<>(16);
Map<String,Object> field1 = new HashMap<>(16);
field1.put("type" , "text") ;
Map<String,Object> field2 = new HashMap<>(16);
field2.put("type" , "text") ;
properties.put("field1" , field1) ;
properties.put("field2" , field2) ;
map.put("properties" , properties) ;
request.mapping(map) ;
CreateIndexResponse response = this.restHighLevelClient.indices().create(request , RequestOptions.DEFAULT) ;
boolean acknowledged = response.isAcknowledged();
2. 判断索引是否存在
GetIndexRequest request = new GetIndexRequest(indexName);
return this.restHighLevelClient.indices().exists(request , RequestOptions.DEFAULT);
3. 插入单个文档
IndexRequest request = new IndexRequest(indexName)
.id(String.valueOf(apiImportData.getId()))
.timeout(TimeValue.timeValueSeconds(time))
.source(jacksonToString(apiImportData) , XContentType.JSON) ;
IndexResponse response = restHighLevelClient.index(request , RequestOptions.DEFAULT) ;
return response.status().toString() ;
4. 批量插入文档
BulkRequest request = new BulkRequest(this.indexName);
request.timeout(TimeValue.timeValueSeconds(list.size()));
for (Model model : list) {
request.add(
new IndexRequest(this.indexName).id(model.getId())
.source(JacksonUtil.toJson(model) , XContentType.JSON)
);
}
BulkResponse response = this.client.bulk(request , RequestOptions.DEFAULT);
5. 判断单个文档是否存在
GetRequest request = new GetRequest(indexName , id) ;
request.fetchSourceContext(new FetchSourceContext(false)) ;
request.storedFields("_none_") ;
return this.restHighLevelClient.exists(request , RequestOptions.DEFAULT);
6. 查询单个文档(通过id)
GetRequest request = new GetRequest(indexName , id) ;
GetResponse response = restHighLevelClient.get(request , RequestOptions.DEFAULT);
return objectMapper.readValue(response.getSource().toString() , ApiImportData.class) ;
7. 匹配查询
SearchRequest request = new SearchRequest(indexName) ;
SearchSourceBuilder builder = new SearchSourceBuilder()
.from(from)
.size(size);
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.should(new MatchQueryBuilder("field1" , field1))
.should(new MatchQueryBuilder("field2" , field2)) ;
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("time");
rangeQueryBuilder.gte(dto.getStartTime().getTime());
rangeQueryBuilder.lte(dto.getEndTime().getTime());
boolQueryBuilder.filter(rangeQueryBuilder);
builder.query(boolQueryBuilder) ;
HighlightBuilder highlightBuilder = new HighlightBuilder() ;
HighlightBuilder.Field field1 = new HighlightBuilder.Field("field1") ;
HighlightBuilder.Field field2 = new HighlightBuilder.Field("field2");
highlightBuilder.field(field1);
highlightBuilder.field(field2);
builder.highlighter(highlightBuilder) ;
request.source(builder) ;
SearchResponse response = this.restHighLevelClient.search(request , RequestOptions.DEFAULT) ;
SearchHit[] hits = response.getHits().getHits();
8. 更新单个文档
UpdateRequest request = new UpdateRequest(indexName, String.valueOf(apiImportData.getId())) ;
request.timeout(TimeValue.timeValueSeconds(1));
System.out.println(jacksonToString(apiImportData));
request.doc(jacksonToString(apiImportData) , XContentType.JSON);
UpdateResponse response = this.restHighLevelClient.update(request , RequestOptions.DEFAULT) ;
9. 批量更新文档
BulkRequest request = new BulkRequest(this.indexName) ;
request.timeout(TimeValue.timeValueSeconds(list.size()));
for (Model model : list) {
request.add(new UpdateRequest(this.indexName , model.getId())
.doc(JacksonUtil.toJson(model)));
}
BulkResponse response = this.client.bulk(request , RequestOptions.DEFAULT);
10. 删除单个文档(通过id)
DeleteRequest request = new DeleteRequest(this.indexName , id);
request.timeout(TimeValue.timeValueSeconds(1));
DeleteResponse response = this.client.delete(request , RequestOptions.DEFAULT);
11. 批量删除文档
BulkRequest request = new BulkRequest(this.indexName);
request.timeout(TimeValue.timeValueSeconds(ids.size()));
for (String id : ids) {
request.add(new DeleteRequest(this.indexName , id));
}
BulkResponse response = this.client.bulk(request , RequestOptions.DEFAULT);