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



我正在尝试使用带有ElasticSearch Java Api 的Bulk Insert 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是一个键:值对集合。它表示JSON结构:

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

相关内容

最新更新