@PostMapping("/insert_data23") public String insertData23(@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 = client.bulk(bulkRequest, RequestOptions.DEFAULT); if (bulkResponse.hasFailures()) { // 处理失败情况 return "fail"; } else { return "success"; } } 这里指定Field优化完整代码
时间: 2024-01-21 16:02:14 浏览: 72
以下是优化后的完整代码,手动指定了每个字段的名称和类型:
```java
@PostMapping("/insert_data23")
public String insertData23(@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.id(data.get("id").toString()); // 指定id字段
indexRequest.source(
new XContentFactory.JsonBuilder()
.startObject()
.field("field1", data.get("field1")) // 指定field1字段
.field("field2", data.get("field2")) // 指定field2字段
.field("field3", data.get("field3")) // 指定field3字段
// ...
.endObject()
);
bulkRequest.add(indexRequest);
}
BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);
if (bulkResponse.hasFailures()) {
// 处理失败情况
return "fail";
} else {
return "success";
}
}
```
这样就可以手动指定每个字段的名称和值,并且可以指定每个字段的类型和相关设置。需要注意的是,手动指定Field可以更精确地控制索引的结构和性能,但也需要额外的开发工作。
阅读全文