listOfObjects ){ -6ren">
gpt4 book ai didi

java - Elasticsearch 中的 BulkRequest java API 错误 : "The number of object passed must be even but was [1]"

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:43:00 24 4
gpt4 key购买 nike

我正在尝试将 map 与 ElasticSearch Java Api 的批量插入 Api 一起使用

public  void bulkInsert(List<Map<String,String>> listOfObjects ){

BulkRequestBuilder bulkRequest = client.prepareBulk();

Iterator<Map<String,String>> itr = listOfObjects.iterator();

if (itr.hasNext()){
Map<String,String> document = itr.next();
bulkRequest.add(client.prepareIndex(index, type)
.setSource(document));
}

BulkResponse bulkResponse = bulkRequest.execute().actionGet();


if (bulkResponse.hasFailures()) {
System.out.println(bulkResponse.buildFailureMessage());
}

}

我用

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

jsonMap.put("name", fullName.toString());
jsonMap.put("file", file);

List<Map<String,String>> listOfObjects = new ArrayList<Map<String,String>>();
listOfObjects.add(jsonMap);
indexService.bulkInsert(listOfObjects);

我收到以下异常传递的对象数量必须是偶数但为[1]

最佳答案

好的,我得到了修复:使用 Map<String, Object>而不是 Map <String,String>

Map<String,Object> jsonMap = new HashMap<String,Object>();

jsonMap.put("name", fullName.toString());
jsonMap.put("file", file);

List<Map<String,Object>> listOfObjects = new ArrayList<Map<String,Object>>();
listOfObjects.add(jsonMap);
indexService.bulkInsert(listOfObjects);

来自 ES java api ;

使用 map

Map 是一个键值对集合。它代表一个JSON结构:

Map<String, Object> json = new HashMap<String, Object>();
json.put("user","kimchy");
json.put("postDate",new Date());
json.put("message","trying out Elasticsearch");

关于java - Elasticsearch 中的 BulkRequest java API 错误 : "The number of object passed must be even but was [1]",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31033717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com