解决:elasticsearch 更新报错:The number of object passed must be even but was [1]

Love The Way You Lie 2023-02-11 03:16 238阅读 0赞

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

  1. 错误的代码写法:

    @Autowired

    1. private ElasticsearchOperations esOperations;
  1. public void updateAxxxData(List<AxxxModel> axxxs) {
  2. for (AxxxModel al : axxxs) {
  3. UpdateQuery update = new UpdateQuery();
  4. update.setIndexName("coll_axxxm_sxxxxxxx_es");
  5. update.setType("coll_axxxm_sxxxxxxx_es");
  6. UpdateRequest request = new UpdateRequest();
  7. request.doc(al);
  8. update.setUpdateRequest(request);
  9. esOperations.update(update);
  10. }
  11. }
  1. 运行后报错:

    java.lang.IllegalArgumentException: The number of object passed must be even but was [1]

  2. 报错行为: request.doc(al);

  3. 把对象改为用Map,循环中代码调整为:

    UpdateQuery update = new UpdateQuery();

    1. update.setIndexName("coll_axxxm_sxxxxxxx_es");
    2. update.setType("coll_axxxm_sxxxxxxx_es");
    3. UpdateRequest request = new UpdateRequest();
    4. Map<String, Object> alMap = Maps.newHashMap();
    5. alMap.put("xxx_time", al.getXxx_time());
    6. alMap.put("xxx_id", al.getXxx_id());
    7. alMap.put("fxxx_id", al.getFxxx_id());
    8. request.doc(alMap);
    9. update.setUpdateRequest(request);
    10. esOperations.update(update);
  4. 以上报错即消失。

发表评论

表情:
评论列表 (有 0 条评论,238人围观)

还没有评论,来说两句吧...

相关阅读