@Testvoid bulkIndex() throws IOException{List<Product> products = new ArrayList<Product>();products.add(new Product("香烟",135,1));
// products.add(new Product("瓜子",154,2));
// products.add(new Product("矿泉水",613,3));
// products.add(new Product("酱油",72,4));
// products.add(new Product("大米",771,5));BulkRequest.Builder bk = new BulkRequest.Builder();int indexId = 4;for (Product product:products) {bk.operations(op->op.index(i->i.index("newindexgst")
// .id(UUID.randomUUID().toString()).id("1").document(product)));}BulkResponse response = clint.configClint().bulk(bk.build());if (response.errors()) {System.out.println("Bulk had errors");for (BulkResponseItem item: response.items()) {if (item.error() != null) {System.out.println(item.error().reason());}}}}## 问题一:使用elasticsearch执行java依赖导入没有报错但是发现导入不成功查看日志发现:[newindexgst][0] primary shard is not active Timeout: [1m], request: [BulkShardRequest [[newindexgst][0]] containing [5] requests]解决方法:
将elasticsearch移动到一个大的磁盘空间```java@GetMapping("saveUser")public ArrayList<User> saveUser() {//添加索引mapping索引会自动创建但mapping自只用默认的这会导致分词器不生效 所以这里我们手动导入mappingRandom random = new Random();List<User> users = new ArrayList<>();for (int i = 0; i < 20; i++) {User user = new User();user.setId(i);user.setName(names[random.nextInt(9)]);user.setAge(random.nextInt(40) + i);user.setInfo(infos[random.nextInt(2)]);users.add(user);}ArrayList<User> users1 = (ArrayList<User>) esUserService.saveAll(users);return users1;}
elasticreposity插入会成功,但是返回会失败,这个可以选择去掉返回数值
问题二:
threw exception [Request processing failed; nested exception is org.springframework.dao.DataAccessResourceFailureException: Unable to parse response body for Response{requestLine=POST /_bulk?timeout=1m HTTP/1.1, host=http://localhost:9200, response=HTTP/1.1 200 OK}; nested exception is java.lang.RuntimeException: Unable to parse response body for Response{requestLine=POST /_bulk?timeout=1m HTTP/1.1, host=http://localhost:9200, response=HTTP/1.1 200 OK}] with root cause
java.lang.NullPointerException: null
解决方法:该问题肯是springboot与elasticserach版本不一致问题,数据导入不会失败,可以选择异常处理忽视该异常