Java BulkProcessorを使用してelasticsearchを一括書き

2332 ワード

pre
業務の需要、探求する時穴を踏んで、記録して調べに備えて、仕事の余暇は多くなくて、簡単に問題と解決策を記録して、後続は精力があって更に補完します
background
bulkはesの一括書きのコマンドであり、bulkprocessorはbulk操作のさらなるパッケージであり、単一のバッチ処理のデータ量を制御し、単一のデータ量が多すぎることによる接続エラーを防ぐことができる.
踏んだ穴
  • bulkprocessorがネット上でクラスのあるjarパッケージが見つからないことを発見し、その後mavenによって依存を管理することを確認し、以下の依存を追加すれば
  • である.
    
                org.elasticsearch.client
                elasticsearch-rest-high-level-client
                7.3.0
            
    
  • prebuildtransportclientは存在しないtransportclientはesが早期に導入した伝送クライアントであり、その多くの構造方法はすでに削除された状態としてマークされており、7.xバージョン以降のes apiではprebuildtransportclientが削除されており、TransportClientの代わりにRestHighLevelClientを使用することが推奨されている.したがって、RestHighLevelClientに置き換えるとよいps:RestHighLevelClientはHttp接続に依存し、apiのRestClientに依存し、その後のいくつかの構成も対応修正
  • を完了する必要がある.
  • BulkProcessor.Listenerの3つのメソッドのトリガ条件beforeBulk:afterBulk(long l,BulkRequest bulkRequest,BulkResponse bulkResponse):esが文を正しく実行した後にトリガされ、正しく実行されるのはesに合致する制限を入力することであり、esによって正しく処理され、一部の要求が実行に失敗する可能性がある.失敗したレコードはbulkResponseから関連情報を取得できますafterBulk(long l,BulkRequest bulkRequest,Throwable throwable):esがすべての文を正しく実行できない場合にトリガーされます.リンククローズなどのエラーが含まれる可能性があります.
  • BulkProcessor.closeの後、プログラムはまたタイプBulkProcessorの閉じを継続し、下位のClientを閉じることはありません.clientを閉じてからpsが正式に終了します.非同期タスクがある場合は、非同期タスクの実行が完了した後にclient
  • を閉じる必要があります.
  • RestHighLevelClientアカウントパスワード認証
  • を追加
    esClient =new RestHighLevelClient(
                    RestClient.builder(
                            new HttpHost("127.0.0.1",9200)
                    ).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
                        public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                            httpClientBuilder.disableAuthCaching();
                            return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                        }
                    })/*.setMaxRetryTimeoutMillis(2000)*/
            );
    

    reference
    https://blog.csdn.net/m0_37817986/article/details/89374996 https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/java-rest-high-document-bulk.html https://discuss.elastic.co/t/prebuilttransportclient-doesnt-exist-in-my-6-3-0-library/156223