@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-17 13:05:43 浏览: 48
List<Map<String, List<String>>> data保存到SharedPreference和读取
4星 · 用户满意度95%
在这段代码中,并没有指定具体的Field,而是将整个Map对象作为source传给了IndexRequest,Elasticsearch会根据Map中的键值对自动推断每个字段的类型和相关设置。
如果需要手动指定Field,可以在Map中增加字段,例如:
```
for (Map<String, Object> data : dataList) {
IndexRequest indexRequest = new IndexRequest("tp_portflux_ip网管_2023_05_12");
indexRequest.source("field1", data.get("field1"));
indexRequest.source("field2", data.get("field2"));
// ...
bulkRequest.add(indexRequest);
}
```
这样就可以手动指定每个字段的名称和值,Elasticsearch会根据值的类型自动推断字段的类型和相关设置。需要注意的是,手动指定Field可以更精确地控制索引的结构和性能,但也需要额外的开发工作。
阅读全文