@PostMapping("/insert_data22") public String insertData22(@RequestBody List<Map<String, Object>> dataList) throws IOException { List<IndexQuery> indexQueries = new ArrayList<>(); for (Map<String, Object> data : dataList) { IndexQuery indexQuery = new IndexQueryBuilder() .withObject(data) .build(); indexQueries.add(indexQuery); } IndexCoordinates indexCoordinates = IndexCoordinates.of("tp_portflux_ip网管_2023_05_12"); elasticsearchRestTemplate.bulkIndex(indexQueries, indexCoordinates); return "success"; } 改成用RestHighLevelClient
时间: 2024-02-13 16:01:52 浏览: 124
好的,下面是使用RestHighLevelClient的代码示例:
```
@PostMapping("/insert_data22")
public String insertData22(@RequestBody List<Map<String, Object>> dataList) throws IOException {
BulkRequest bulkRequest = new BulkRequest();
for (Map<String, Object> data : dataList) {
IndexRequest indexRequest = new IndexRequest("tp_portflux_ip网管_2023_05_12");
indexRequest.source(data);
bulkRequest.add(indexRequest);
}
BulkResponse bulkResponse = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
if (bulkResponse.hasFailures()) {
// 处理失败情况
return "fail";
} else {
return "success";
}
}
```
在这个代码示例中,我们使用BulkRequest和IndexRequest来构建批量插入数据请求,并使用RestHighLevelClient来执行请求。与ElasticsearchRestTemplate不同的是,这里我们没有使用@Field注解来指定Field的相关设置,而是使用数据本身来构建IndexRequest,并将其添加到BulkRequest中。这样,Elasticsearch将会根据数据本身的类型来自动推断每个字段的类型和相关设置,以确保数据能够正确地被处理和查询。
需要注意的是,在使用RestHighLevelClient时,您需要自己处理请求的失败情况,并根据需要进行相应的处理。
阅读全文