1.失败,使用TransportClient

  1. public static void bulkInsert(TransportClient client) throws IOException {
  2. List<Person> ps=new ArrayList<Person>();
  3. Person one=new Person();
  4. one.setId("1");
  5. one.setAddress("add");
  6. one.setMobile("1111");
  7. one.setSex("f");
  8. one.setUsername("www");
  9. ps.add(one);
  10.  
  11. Person two=new Person();
  12. two.setId("2");
  13. two.setAddress("add");
  14. two.setMobile("2222");
  15. two.setSex("f");
  16. two.setUsername("www");
  17. ps.add(two);
  18.  
  19. Persons pss=new Persons();
  20. pss.setPersons(ps);
  21. pss.setUuid("uiid");
  22.  
  23. String jsonStr=JSON.toJSONString(pss);
  24. System.out.println(jsonStr);
  25.  
  26. IndexResponse response = client.prepareIndex("www", "www").setSource(jsonStr).get();
  27. System.out.println("创建成功!");
  28.  
  29. }

原因是:setSource方法不支持json,源码如下:

  1. /**
  2. * Constructs a simple document with a field name and value pairs.
  3. * <p>
  4. * <b>Note: the number of objects passed to this method must be an even
  5. * number. Also the first argument in each pair (the field name) must have a
  6. * valid String representation.</b>
  7. * </p>
  8. */
  9. public IndexRequestBuilder setSource(Object... source) {
  10. request.source(source);
  11. return this;
  12. }

2.成功,使用RestHighLevelClient 可以直接使用json

  1. public static void InsertByJson(RestHighLevelClient client) throws IOException {
  2. List<Person> ps=new ArrayList<Person>();
  3. Person one=new Person();
  4. one.setId("1");
  5. one.setAddress("add");
  6. one.setMobile("1111");
  7. one.setSex("f");
  8. one.setUsername("www");
  9. ps.add(one);
  10.  
  11. Person two=new Person();
  12. two.setId("2");
  13. two.setAddress("add");
  14. two.setMobile("2222");
  15. two.setSex("f");
  16. two.setUsername("www");
  17. ps.add(two);
  18.  
  19. Persons pss=new Persons();
  20. pss.setPersons(ps);
  21. pss.setUuid("uiid");
  22.  
  23. String jsonStr=JSON.toJSONString(pss);
  24. System.out.println(jsonStr);
  25. IndexRequest req = new IndexRequest("www", "www");
  26. req.source(jsonStr, XContentType.JSON);
  27. IndexResponse response = client.index(req);
  28. System.out.println("创建成功!");
  29.  
  30. }

The number of object passed must be even but was [1]的更多相关文章

  1. ES添加文档 踩坑之 —— The number of object passed must be even but was [1]

    读取文件,获取json格式的数据doc, 然后使用 bulkRequestBuilder.add(client.prepareIndex(index, type, id).setSource(doc) ...

  2. ElasticSearch-The number of object passed must be even but was [1]-问题解决

    ES版本:6.4.3 1.The number of object passed must be even but was [1] 问题代码: IndexRequest indexRequest = ...

  3. Javascript中类型: undefined, number ,string ,object ,boolean

    var a1; var a2 = true;var a3 = 1;var a4 = "Hello";var a5 = new Object();var a6 = null;var ...

  4. [bug] Unrecognized token 'code': was expecting (JSON String, Number, Array, Object,'true', 'false' or 'null')

    JSON格式有误,需用JSON.stringify()函数转换一下 参考 https://www.cnblogs.com/sunyanblog/p/13788740.html https://www. ...

  5. elasticsearch-java异常

    1. Unsupported major.minor version 52.0 java的jdk版本过低导致,需要更换为jdk1.8+ 2. elasticsearch 的version在pom中提示 ...

  6. elasticsearch 导入基础数据并索引之 geo_point

    elasticsearch 中的地理信息存储, 有geo_point形式和geo_shape两种形式 此篇只叙述geo_point, 地理位置需要声明为特殊的类型, 不显示在mapping中定义的话, ...

  7. SAP NUMBER RANGE维护配置object FBN1 Deletion only possible if status is initial

    背景: 错误日志: SAP FBN1 Deletion only possible if status is initial 场景: 如果目标机已有NUMBER RANGE 不为0,需要删除配置年为9 ...

  8. Chapter 3 Discovering Classes and Object

    Chatper 3 Discovering Classes and Object Exercises: 1.What is a class? A class is a template for man ...

  9. Directive Definition Object

    不知道为什么这个我并没有想翻译过来的欲望,或许我并没有都看熟透,不好误人子弟,原版奉上. Here's an example directive declared with a Directive D ...

随机推荐

  1. 【Win10】实现 ListViewBase 平滑滚动

    首先解释下标题的 ListViewBase 是什么鬼.ListViewBase 我们可以查阅 MSDN 文档:https://msdn.microsoft.com/zh-cn/library/wind ...

  2. shell模拟“多线程”

      shell中并没有真正意义上的多线程,要实现"多线程"可以启动多个子进程,并将子进程放入后台执行来模拟多线程,最大程度利用CPU性能. 循环中执行并行代码 #!/bin/bas ...

  3. C#模拟请求,模拟登录,Cookie设置、文件上传等问题汇总

    由于业务需求,最近需要模拟完成登陆某个网站,并上传所需要的文件.在开发途中,遇到了很多问题,现在,就我遇到的一些问题及解决办法说明如下,希望对遇到同样问题的人有所帮助.因为技术有限,可能有些内容并不完 ...

  4. winform程序更新

    更新程序和主程序是分开的,得在做一个exe可执行更新程序. 主程序在登陆时判断是否需要更新. 我这边判断方式是直接在配置文件里面设置版本号,然后和服务器上面的版本对比,低于服务器版本就更新程序. // ...

  5. [.net]线程基础

    关于线程的诞生 早期的16位Windows只有一个执行线程,在执行各种程序时,如果这个线程运行出现了问题,就会“冻结”整个系统,使得系统处于未响应状态.这是一件多么尴尬的事儿,无论是用户还是微软自己, ...

  6. SPOJ Substrings

    题目链接:戳我 题目大意:给定一个字符串,它的长度n<=2e5.求长度1~n的子串出现的最大次数. 对于一个子串,它的出现次数是多少?就是它所在endpos集合的大小qwq(注意,这里的大小不指 ...

  7. keepalive 原理讲解

    keepalive 我们说到keepalive的时候,需要先明确一点,这个keepalive说的是tcp的还是http的. tcp的keepalive是侧重在保持客户端和服务端的连接,一方会不定期发送 ...

  8. Android逆向-Android基础逆向7(内购干货集合)

    本文作者:MSTLab-EvilChen 0×00 前言 首先,本来想写NDK的,但是还是先把这个流程过一遍吧,这个流程是必不可少的.其次,RMB真的是一个好东西. 导航 由于本人为了节省时间,不想贴 ...

  9. 【转载】Chrome 0day漏洞:不要用Chrome查看pdf文件

    英文原文地址:https://blog.edgespot.io/2019/02/edgespot-detects-pdf-zero-day-samples.html 中文原文地址:https://ww ...

  10. SSH免密码远程登录Linux

    1. 有A,B两台机(Linux/unix), 要想从A用ssh远程登录到B上(假设各自的IP,A:192.168.100:B:192.168.1.104). 2. 在A机上,用“ssh-keygen ...