@Grab(group='org.elasticsearch.client', module='elasticsearch-rest-high-level-client', version='7.15.0') import org.elasticsearch.client.RestHighLevelClient import org.elasticsearch.client.RequestOptions import org.elasticsearch.action.bulk.BulkRequest import org.elasticsearch.action.index.IndexRequest import org.elasticsearch.action.bulk.BulkResponse import org.elasticsearch.common.xcontent.XContentType import java.nio.file.Files import java.nio.file.Paths // Elasticsearch 源集群的地址和端口 def sourceHost = "localhost" def sourcePort = 9200 // Elasticsearch 目标集群的地址和端口 def targetHost = "localhost" def targetPort = 9200 // Elasticsearch 索引名称和类型 def indexName = "your_index_name" def indexType = "_doc" // 创建 Elasticsearch 客户端 def sourceClient = new RestHighLevelClient( RestClient.builder( new HttpHost(sourceHost, sourcePort, "http") ) ) def targetClient = new RestHighLevelClient( RestClient.builder( new HttpHost(targetHost, targetPort, "http") ) ) // 读取导出的索引数据文件 def inputFile = Paths.get("output.json") def sourceData = Files.readAllBytes(inputFile) def sourceDocs = new groovy.json.JsonSlurper().parseText(sourceData) // 创建一个批量请求 def bulkRequest = new BulkRequest() sourceDocs.each { doc -> // 创建一个索引请求,将文档内容添加到请求中 def indexRequest = new IndexRequest(indexName, indexType) .source(doc, XContentType.JSON) // 将索引请求添加到批量请求中 bulkRequest.add(indexRequest) } // 发送批量请求,获取响应结果 BulkResponse bulkResponse = targetClient.bulk(bulkRequest, RequestOptions.DEFAULT) // 处理响应结果 if (bulkResponse.hasFailures()) { println "导入数据时发生错误:${bulkResponse.buildFailureMessage()}" } else { println "数据导入成功!共导入 ${bulkRequest.numberOfActions()} 条数据。" } // 关闭 Elasticsearch 客户端 sourceClient.close() targetClient.close()