zoukankan      html  css  js  c++  java
  • The number of object passed must be even but was [1]

    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("创建成功!");
    
        }
  • 相关阅读:
    ReportMachine打印条形码的问题
    性能测试基础知识
    jmeter请求参数中文乱码及无法读取CSV文件解决办法
    soapui学习
    java环境变量和查看安装路径
    python字典中显示中文
    Jmeter做webservices接口测试
    windows 上robot framework 读取sqlite3提示:OperationalError: unable to open database file错误
    c++ 复习练习
    笔记草稿。
  • 原文地址:https://www.cnblogs.com/davidwang456/p/9984516.html
Copyright © 2011-2022 走看看