将ElasticSearch的数据批量导入至MySQL
导入Jar包
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.14.0</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.14.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
Elastic的操作类
public class ElasticCustomClient {
RestHighLevelClient restHighLevelClient = null;
public void createClient() {
restHighLevelClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("127.0.0.1", 9200),
new HttpHost("127.0.0.1", 9300),
new HttpHost("127.0.0.1", 9400))
);
}
public List<String> scrollData(String index) {
try {
createClient();
String scrollId = "";
List<String> result = new ArrayList<>();
SearchRequest searchRequest = new SearchRequest();
searchRequest.indices(index);
searchRequest.scroll("1m");
SearchResponse response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
SearchHits hits = response.getHits();
for (int i = 0; i < hits.getHits().length; i++) {
result.add(hits.getHits()[i].getSourceAsString());
}
//记录滚动ID
scrollId = response.getScrollId();
while (true) {
if (scrollId == null || scrollId.equals("")) {
break;
}
SearchScrollRequest searchScrollRequest = new SearchScrollRequest(scrollId).scroll(TimeValue.timeValueMinutes(1));
response = restHighLevelClient.scroll(searchScrollRequest, RequestOptions.DEFAULT);
if (response != null && response.getHits().getHits().length > 0) {
for (SearchHit hit : response.getHits().getHits()) {