@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.search.SearchRequest
import org.elasticsearch.action.search.SearchResponse
import org.elasticsearch.search.builder.SearchSourceBuilder
import org.elasticsearch.index.query.QueryBuilders
import org.elasticsearch.index.query.MatchAllQueryBuilder
import java.nio.file.Files
import java.nio.file.Paths
def client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http")
)
)
// 设置要导出的索引名
def indexName = "your_index_name"
// 创建一个搜索请求
def searchRequest = new SearchRequest(indexName)
// 设置搜索条件,这里使用 MatchAllQueryBuilder 表示匹配所有文档
def searchSourceBuilder = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery())
searchRequest.source(searchSourceBuilder)
// 发送搜索请求,获取响应结果
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT)
// 处理响应结果,将搜索结果导出到文件中
def hits = searchResponse.getHits().getHits()
def outputFile = Paths.get("output.json")
Files.write(outputFile, new byte[0])
Files.write(outputFile, "[\n".getBytes(), StandardOpenOption.APPEND)
hits.eachWithIndex { hit, index ->
def source = hit.getSourceAsString()
Files.write(outputFile, source.getBytes(), StandardOpenOption.APPEND)
if (index < hits.size() - 1) {
Files.write(outputFile, ",\n".getBytes(), StandardOpenOption.APPEND)
}
}
Files.write(outputFile, "\n]".getBytes(), StandardOpenOption.APPEND)
// 关闭 Elasticsearch 客户端
client.close()