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("创建成功!");
    
        }
  • 相关阅读:
    卡特兰数
    混合运算改进(代码)
    典型用户和场景
    混合运算
    四则运算
    计算
    感想
    git
    附加导航 affix,side--toolbar(可结合博客园使用~)
    对python-rrdtool模块的浅研究。
  • 原文地址:https://www.cnblogs.com/davidwang456/p/9984516.html
Copyright © 2011-2022 走看看