在使用RestHighLevelClient
进行新增/修改时,抛出如下异常
// 新增/修改ES文档
BulkRequest bulkRequest = new BulkRequest(ESConstant.USER_INDEX);
for (SyncToEsViewObj syncToEsViewObj : syncToEsViewObjList) {
bulkRequest.add(new IndexRequest().source(JSONObject.toJSONString(syncToEsViewObj)).id(this.getEsId(syncToEsViewObj)));
}
// 异常
java.lang.IllegalArgumentException: The number of object passed must be even but was [1]
at org.elasticsearch.action.index.IndexRequest.source(IndexRequest.java:480)
at org.elasticsearch.action.index.IndexRequest.source(IndexRequest.java:467)
...
解决方案
在new IndexRequest().source()
方法中传入XContentType.JSON
参数
// 新增/修改ES文档
BulkRequest bulkRequest = new BulkRequest(ESConstant.USER_INDEX);
for (SyncToEsViewObj syncToEsViewObj : syncToEsViewObjList) {
bulkRequest.add(new IndexRequest().source(JSONObject.toJSONString(syncToEsViewObj), XContentType.JSON).id(this.getEsId(syncToEsViewObj)));
}