elasticsearch:The number of object passed must be even but was [1]

通过Map 更新文档时出现如下错误:

Exception in thread "main" java.lang.IllegalArgumentException: The number of object passed must be even but was [1]
	at org.elasticsearch.action.index.IndexRequest.source(IndexRequest.java:498)
	at org.elasticsearch.action.index.IndexRequest.source(IndexRequest.java:485)
	at org.elasticsearch.action.update.UpdateRequest.doc(UpdateRequest.java:742)
	at com.sun.doc.UpdateDoc.updateDocByMap(UpdateDoc.java:54)
	at com.sun.doc.UpdateDoc.main(UpdateDoc.java:32)

源码如下:

public static void updateDocByMap(RestHighLevelClient client) throws IOException {
        UpdateRequest request = new UpdateRequest("book", "1");
        // 这里必须是Map<String, Object>
        Map<String, String> map = new HashMap<>();
        map.put("name", "三国演义map111");
        request.doc(map);
        UpdateResponse response = client.update(request, RequestOptions.DEFAULT);
        System.out.println("response.getId() = " + response.getId());
        System.out.println("response.getIndex() = " + response.getIndex());
        System.out.println("response.getVersion() = " + response.getVersion());
        if (response.getResult() == DocWriteResponse.Result.UPDATED) {
            System.out.println("文档更新成功");
        }
        client.close();
    }

错误原因:

Map<String, String> map = new HashMap<>();

api 源码

public UpdateRequest doc(Map<String, Object> source) {
        this.safeDoc().source(source);
        return this;
    }

修改为:

Map<String, Object> map = new HashMap<>();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值