解决:elasticsearch 更新报错:The number of object passed must be even but was [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);
}
}
运行后报错:
java.lang.IllegalArgumentException: The number of object passed must be even but was [1]
报错行为: request.doc(al);
把对象改为用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);
以上报错即消失。
还没有评论,来说两句吧...