• 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("创建成功!");
    
        }
  • 相关阅读:
    windows系统往远程桌面上共享文件(某磁盘下文件)如何远程连接传输文件。
    小程序实现读数据、统计词频、建词典
    pickle模块以特殊的二进制格式保存和恢复数据对象
    用一个简单小程序谈import和from...import的区别
    windows系统(64bit)安装python、pytorch
    SQL Server 一个简单的游标
    SQL server高级语法
    SQL server基本语法
    SSIS SQL Server配置自动作业
    Power BI 入门资料
  • 原文地址:https://www.cnblogs.com/davidwang456/p/9984516.html
Copyright © 2020-2023  润新知