Bulkprocessor写入ES时数据重复两三倍。
创始人
2024-12-26 15:30:35
0

可能是Bulkprocessor在处理数据时出现了重复数据。可以通过以下方法解决:

  1. 判断Bulkprocessor是否重复写入数据。

    调试时可以打开ES监视器(如Elasrticsearch-Head)观察数据写入情况。另外可以在代码中添加日志输出,查看Bulkprocessor每次写入的数据量。

  2. 使用Bulkprocessor的新版API。

    在Elasticsearch 7.x中,Bulkprocessor的API已升级。可以使用新的BulkRequestBuilder和BulkProcessor.Builder方法创建Bulkprocessor,可以有效避免数据重复问题。

    示例代码如下:

    BulkRequest request = new BulkRequest();
    request.add(new IndexRequest("index1", "doc", "1").source(XContentFactory.jsonBuilder()
            .startObject()
            .field("name", "Joe Smith")
            .field("age", 25)
            .endObject()));
    request.add(new DeleteRequest("index2", "doc", "2"));
    request.add(new UpdateRequest("index3", "doc", "3")
            .doc(XContentFactory.jsonBuilder()
                    .startObject()
                    .field("gender", "male")
                    .endObject()));
    BulkProcessor.Listener listener = new BulkProcessor.Listener() {
        @Override
        public void beforeBulk(long executionId, BulkRequest request) {
            logger.debug("Executing bulk [{}] with {} requests", executionId, request.numberOfActions());
        }
    
        @Override
        public void afterBulk(long executionId, BulkRequest request, BulkResponse response) {
            logger.debug("Executed bulk [{}] with {} requests", executionId, request.numberOfActions());
        }
    
        @Override
        public void afterBulk(long executionId, BulkRequest request, Throwable failure) {
            logger.warn("Error executing bulk [{}]", executionId, failure);
        }
    };
    BulkProcessor bulkProcessor = BulkProcessor.builder(client::bulkAsync, listener).build();
    bulkProcessor.add(request);
    

    在使用Bulkprocessor的同时,还可以使用BulkProcessor的Listener接口,监听Bulkprocessor的执行情况,便于调试。

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...