设为首页 收藏本站
查看: 1500|回复: 0

[经验分享] ElasticSearch API for JAVA 学习笔记

[复制链接]

尚未签到

发表于 2019-1-29 09:28:22 | 显示全部楼层 |阅读模式
/**  
     * es-api的方法学习:
  
     * 1.prepareIndex方法:索引数据到ElasticSearch
  
     * 2.prepareGet方法:获取信息
  
     * 3.prepareDelete方法:删除信息
  
     * 4.update方法:更新信息
  
     *   4.1 upsert:在使用update方法时:
  
     *       a:针对文档不存在的情况时,做出index数据的操作,update无效;
  
     *        b:如果文档存在,那么index数据操作无效,update有效;
  
     */
  
    public static void main(String[] args) throws IOException, InterruptedException, ExecutionException {
  
        //通过Settings类设置属性参数
  
        Settings settings = Settings.settingsBuilder().put("cluster.name","myApp").build();
  

  
        //启动Client
  
        Client client = null;
  
        try {
  
            client = TransportClient.builder().settings(settings).build().
  
                    addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("101.200.124.27"),9300));
  
        } catch (UnknownHostException e) {
  
            e.printStackTrace();
  
        }
  
        //执行操作
  
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  
        XContentBuilder jsonBuilder = XContentFactory.jsonBuilder()
  
                .startObject()
  
                .field("user","yuchen")
  
                .field("interest","reading book")
  
                .field("insert_time",df.format(new Date()))
  
                .endObject();
  
        //1.prepareIndex方法:索引数据到ElasticSearch
  
        IndexResponse response = client.prepareIndex("index-test","weibo","4")
  
            .setSource(jsonBuilder)
  
            .get();
  

  
        String _index = response.getIndex();
  
        String _type = response.getType();
  
        String _id = response.getId();
  
        long _version = response.getVersion();
  
        boolean created = response.isCreated();
  
        System.out.println(_index+" "+_type+" "+_id+" "+_version+" "+created);
  

  
        //2.prepareGet方法:获取信息
  
        GetResponse getResponse = client.prepareGet("index-test","weibo","1").get();
  
        System.out.println(getResponse.getSourceAsString());
  

  
        //3.prepareDelete方法:删除信息
  
        DeleteResponse deleteResponse = client.prepareDelete("index-test","weibo","4").get();
  
        System.out.println(deleteResponse.isFound());
  

  
        //4.update方法:更新信息
  
        UpdateRequest updateRequest = new UpdateRequest();
  
        updateRequest.index("index-test");
  
        updateRequest.type("weibo");
  
        updateRequest.id("1");
  
        updateRequest.doc(XContentFactory.jsonBuilder().startObject().field("interest","music").endObject());
  
        UpdateResponse updateResponse = client.update(updateRequest).get();
  
        System.out.println(updateResponse.isCreated());
  
        //update方法: 可以为已有的文档添加新的字段
  
        UpdateResponse updateResponse2 = client.prepareUpdate("index-test", "weibo", "1")
  
            .setDoc(XContentFactory.jsonBuilder()
  
                .startObject()
  
                .field("interest2","reading")
  
                .endObject()).get();
  
        System.out.println(updateResponse2.isCreated());
  
        //4.1 upsert:在使用update方法时,a:针对文档不存在的情况时,做出index数据的操作,update无效;
  
        //                          b:如果文档存在,那么index数据操作无效,update有效;
  
        //先构建一个IndexRequest
  
        IndexRequest indexRequest = new IndexRequest("index-test","weibo","14");
  
        indexRequest.source(XContentFactory.jsonBuilder()
  
                .startObject()
  
                .field("user","yuchen2")
  
                .field("interest","eating")
  
                .field("insert_time",df.format(new Date()))
  
                .endObject());
  
        //再构建一个UpdateRequest,并用IndexRequest关联
  
        UpdateRequest updateRequest3 = new UpdateRequest("index-test","weibo","14");
  
        updateRequest3.doc(XContentFactory.jsonBuilder()
  
                .startObject()
  
                .field("interest2","love")
  
                .endObject()
  
                ).upsert(indexRequest);
  
        client.update(updateRequest3).get();
  

  
        if(client != null){
  
            client.close();
  
        }
  
    }



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-669004-1-1.html 上篇帖子: Elasticsearch6.0及其head插件安装 下篇帖子: elasticsearch安装中文插件ik
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表