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("创建成功!");
    
        }
  • 相关阅读:
    c#扩展函数
    c# 正则匹配对称括号
    sqllocaldb 2016安装
    scrapy图片数据爬取
    Scrapy爬取全站数据并存储到数据库和文件中
    Scrapy基于终端指令的持久化存储
    nginx指定配置文件
    腾讯云安装python36
    Django部署腾讯云服务时候报错:SQLite 3.8.3 or later is required (found 3.7.17)
    flask打包下载zip文件
  • 原文地址:https://www.cnblogs.com/davidwang456/p/9984516.html
Copyright © 2011-2022 走看看