1.失败,使用TransportClient
public static void bulkInsert(TransportClient client) throws IOException { List<Person> ps=new ArrayList<Person>(); Person one=new Person(); one.setId("1"); one.setAddress("add"); one.setMobile("1111"); one.setSex("f"); one.setUsername("www"); ps.add(one); Person two=new Person(); two.setId("2"); two.setAddress("add"); two.setMobile("2222"); two.setSex("f"); two.setUsername("www"); ps.add(two); Persons pss=new Persons(); pss.setPersons(ps); pss.setUuid("uiid"); String jsonStr=JSON.toJSONString(pss); System.out.println(jsonStr); IndexResponse response = client.prepareIndex("www", "www").setSource(jsonStr).get(); System.out.println("创建成功!"); }
原因是:setSource方法不支持json,源码如下:
/** * Constructs a simple document with a field name and value pairs. * <p> * <b>Note: the number of objects passed to this method must be an even * number. Also the first argument in each pair (the field name) must have a * valid String representation.</b> * </p> */ public IndexRequestBuilder setSource(Object... source) { request.source(source); return this; }
2.成功,使用RestHighLevelClient 可以直接使用json
public static void InsertByJson(RestHighLevelClient client) throws IOException { List<Person> ps=new ArrayList<Person>(); Person one=new Person(); one.setId("1"); one.setAddress("add"); one.setMobile("1111"); one.setSex("f"); one.setUsername("www"); ps.add(one); Person two=new Person(); two.setId("2"); two.setAddress("add"); two.setMobile("2222"); two.setSex("f"); two.setUsername("www"); ps.add(two); Persons pss=new Persons(); pss.setPersons(ps); pss.setUuid("uiid"); String jsonStr=JSON.toJSONString(pss); System.out.println(jsonStr); IndexRequest req = new IndexRequest("www", "www"); req.source(jsonStr, XContentType.JSON); IndexResponse response = client.index(req); System.out.println("创建成功!"); }