RestHighLevelClient客户端相关CURD操作

  客户端连接

public void start() {
    try {
        restHighLevelClient = new RestHighLevelClient(
                RestClient.builder(new HttpHost(esHost,esPort,"http")).setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
                            @Override
                            public Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) {
                   // 设置相关连接配置 requestConfigBuilder.setConnectTimeout(connectTimeOut); requestConfigBuilder.setSocketTimeout(socketTimeOut); requestConfigBuilder.setConnectionRequestTimeout(connectionRequestTimeOut); return requestConfigBuilder; } } )); } catch (Exception e) { LogBackUtils.error(e.getMessage()); } }

  索引创建

public void createIndex(String indexName, String settings, String mappings) {
        try{
            CreateIndexRequest request = new CreateIndexRequest(indexName);
            buildSetting(request, settings);
            buildIndexMapping(request, mappings);
            client.indices().create(request, RequestOptions.DEFAULT);
            LogBackUtils.info("索引创建成功");
        }catch (Exception e){
            LogBackUtils.error("索引创建失败:{}", e);
        }
    }
/**
 * 设置分片
 * @param request
 */
private void buildSetting(CreateIndexRequest request, String settings) {
    request.settings(settings, XContentType.JSON);
}

/**
 * 设置索引的mapping
 * @param request
 */
private void buildIndexMapping(CreateIndexRequest request, String mappings) {
    request.mapping(mappings, XContentType.JSON);
}

  判断索引是否存在

public boolean existsIndex(String indexName) {
        try{
            GetIndexRequest request = new GetIndexRequest(indexName);
            boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
            return exists;
        }catch (Exception e){
            LogBackUtils.error("未知错误:{}", e);
        }
        return false;
    }

  单条数据插入

public IndexResponse sourceIndex(String indexName, Bulk bulk) {
        try{
            IndexRequest request = new IndexRequest("post");
            request.index(indexName).id(String.valueOf(bulk.getId())).source(JSON.parseObject(bulk.toElasticString()), XContentType.JSON);
            IndexResponse response = client.index(request, RequestOptions.DEFAULT);
            LogBackUtils.info("elastic 索引新增成功");
            return response;
        }catch (Exception e){
            LogBackUtils.error("索引数据变更失败:{}", e);
        }
        return null;
    }

  批量数据插入

public BulkResponse bulkIndex(String indexName, List<Bulk> bulks) {
    try{
        BulkRequest bulkRequest = new BulkRequest();
        IndexRequest request = null;
        for(Bulk bulk: bulks) {
            request = new IndexRequest("post");
            request.index(indexName).id(String.valueOf(bulk.getId())).source(bulk.toString(), XContentType.JSON);
            bulkRequest.add(request);
        }
        BulkResponse response = client.bulk(bulkRequest, RequestOptions.DEFAULT);
        return response;
    }catch (Exception e){
        LogBackUtils.error("批量插入索引失败:{}", e);
    }
    return null;
}

  批量数据processor方式插入

public bulkProcessor init() {
        BulkProcessor.Listener listener = new BulkProcessor.Listener() {
            @Override
            public void beforeBulk(long executionId, BulkRequest request) {
                LogBackUtils.info("---尝试插入{}条数据---", request.numberOfActions());
            }

            @Override
            public void afterBulk(long executionId, BulkRequest request, BulkResponse response) {
                LogBackUtils.info("---尝试插入{}条数据成功---", request.numberOfActions());
            }

            @Override
            public void afterBulk(long executionId, BulkRequest request, Throwable failure) {
                LogBackUtils.error("---尝试插入数据失败---", failure);
            }
        };

        return BulkProcessor.builder((request, bulkListener) ->
                client.bulkAsync(request, RequestOptions.DEFAULT, bulkListener), listener)
        .setBulkActions(10000)
        .setBulkSize(new ByteSizeValue(10, ByteSizeUnit.MB))
        .setFlushInterval(TimeValue.timeValueSeconds(5))
        .setConcurrentRequests(2)
        .build();
    }

public void bulkIndex(String indexName, List<Bulk> bulks) {
        BulkProcessor bulkProcessor = init();
        IndexRequest request = null;
        for(Bulk bulk: bulks) {
            request = new IndexRequest("post");
            request.index(indexName).id(String.valueOf(bulk.getId())).source(bulk.toElasticString(), XContentType.JSON);
            bulkProcessor.add(request);
        }
    }

 

数据获取的方式暂时未加上,主要通过postman查看数据。后续有时间再补上

转载于:https://www.cnblogs.com/chenkaiyin1201/p/10745143.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值