1. 程式人生 > >Es新增資訊踩坑之--The number of object passed must be even but was [1]

Es新增資訊踩坑之--The number of object passed must be even but was [1]

es用1.4版本時

BulkRequestBuilder bulkRequest = getTransportClient().prepareBulk();

IndexRequest request = null;
String json = "{" +
        "\"user\":\"kimchy\"," +
        "\"postDate\":\"2013-01-30\"," +
        "\"message\":\"trying out Elasticsearch\"" +
    "}"
request = getTransportClient()
						.prepareIndex(PCSConstant.ES_INDEX_QUALITY,             
                         PCSConstant.ECS_DATA_QUALITY).setSource(json)
						.request();
//此處setSource()的引數可以是jsong格式的的字串
bulkRequest.add(request);
BulkResponse bulkResponse = bulkRequest.get();

es 變更版本後,此處程式碼不適用,會報  The number of object passed must be even but was [1] 這個異常

新的程式碼

BulkRequestBuilder bulkRequest = getTransportClient().prepareBulk();

IndexRequest request = null;
String json = "{" +
        "\"user\":\"kimchy\"," +
        "\"postDate\":\"2013-01-30\"," +
        "\"message\":\"trying out Elasticsearch\"" +
    "}"
Map<String,Object> map = new com.google.gson.Gson().fromJson(json,map.getClass());
request = getTransportClient()
						.prepareIndex(PCSConstant.ES_INDEX_QUALITY,             
                         PCSConstant.ECS_DATA_QUALITY).setSource(map)
						.request();
//此處setSource()的引數不能是json串了,我把他轉化成了map
bulkRequest.add(request);
BulkResponse bulkResponse = bulkRequest.get();