1. 错误的代码写法:
@Autowired
private ElasticsearchOperations esOperations;
public void updateAxxxData(List<AxxxModel> axxxs) {
for (AxxxModel al : axxxs) {
UpdateQuery update = new UpdateQuery();
update.setIndexName("coll_axxxm_sxxxxxxx_es");
update.setType("coll_axxxm_sxxxxxxx_es");
UpdateRequest request = new UpdateRequest();
request.doc(al);
update.setUpdateRequest(request);
esOperations.update(update);
}
}
2. 运行后报错:
java.lang.IllegalArgumentException: The number of object passed must be even but was [1]
3. 报错行为: request.doc(al);
4. 把对象改为用Map,循环中代码调整为:
UpdateQuery update = new UpdateQuery();
update.setIndexName("coll_axxxm_sxxxxxxx_es");
update.setType("coll_axxxm_sxxxxxxx_es");
UpdateRequest request = new UpdateRequest();
Map<String, Object> alMap = Maps.newHashMap();
alMap.put("xxx_time", al.getXxx_time());
alMap.put("xxx_id", al.getXxx_id());
alMap.put("fxxx_id", al.getFxxx_id());
request.doc(alMap);
update.setUpdateRequest(request);
esOperations.update(update);
5. 以上报错即消失。