- 批量新增数据
// 构建一个批量操作BulkOperation的集合
List<BulkOperation> bulkOperations = taskFileList.stream().map(taskFile -> {
return new BulkOperation.Builder().create(d -> d.document(taskFile).id(UUID.randomUUID().toString()).index(indexName)).build();
}).collect(Collectors.toList());
BulkResponse bulkResponse = elasticsearchClient.bulk(e -> e.index(indexName).operations(bulkOperations));
- 根据size查询全部
SearchResponse<EsTaskFile> search = elasticsearchClient.search(s -> s
.index(indexName).size(100), EsTaskFile.class);
List<EsTaskFile> esTaskFileList = search.hits().hits().stream().map(Hit::source).collect(Collectors.toList());
注意:size的默认值为10
- term查询:精确匹配
SearchResponse<EsTaskFile> search = elasticsearchClient.search(s -> s
.index(indexName)
.query(q -> q
.term(t -> t
.field("fileId")
.value(v -> v.longValue(id))
)),EsTaskFile.class);
- 复杂查询:term、matchPhrase、排序、高亮、分页
Query byTaskId = TermQuery.of(t -> t
.field("taskId")
.value(taskId)
)._toQuery();
Query byEntityName = MatchPhraseQuery.of(m -> m
.field("content")
.query(entityName)
.slop(0)
)._toQuery();
SearchResponse<EsTaskFile> search = elasticsearchClient.search(s -> s
.index(indexName)
.query(q -> q
.bool(b -> b
.must(byTaskId)
.must(byEntityName)
)
).sort(builder -> builder
.field(fieldBuilder -> fieldBuilder
.field("fileName")
.order(SortOrder.Asc)
)
).highlight(builder -> builder
.preTags("<font style= \"background: yellow\">")
.postTags("</font>")
.fields("content", fieldBuilder -> fieldBuilder)
).from((pageNum - 1) * pageSize).size(pageSize),
EsTaskFile.class);
- 根据条件批量删除
List<FieldValue> values = taskIdList.stream().map(FieldValue::of).collect(Collectors.toList());
Query byTaskIds = TermsQuery.of(t -> t
.field("taskId")
.terms(new TermsQueryField.Builder()
.value(values).build()
)
)._toQuery();
DeleteByQueryRequest of = new DeleteByQueryRequest.Builder().index(indexName).query(byTaskIds).build();
DeleteByQueryResponse deleteByQueryResponse = elasticsearchClient.deleteByQuery(of);