Java与es8实战之三:es8的Java Client基础应用

  1. 批量新增数据
// 构建一个批量操作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));
  1. 根据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

  1. 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);
  1. 复杂查询: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);
  1. 根据条件批量删除
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);
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值