• Elasticsearch在Java中的增删改查


    public class ElasticAPI {
        private static RestClient restClient;
    
        static {
            restClient=RestClient.builder(new HttpHost("localhost",9200,"http")).build();
        }
    
        /***
         * Index API
         * @throws IOException
         */
        @Test
        public void IndexAPI() throws IOException {
            String method = "PUT";
            String endpoint = "twitter/_doc/1";
            HttpEntity entity = new NStringEntity(
                    "{
    " +
                            "    "user" : "kimchy",
    " +
                            "    "post_date" : "2009-11-15T14:12:12",
    " +
                            "    "message" : "trying out Elasticsearch"
    " +
                            "}", ContentType.APPLICATION_JSON);
            Response response = restClient.performRequest(method,endpoint, Collections.<String, String>emptyMap(),entity);
            System.out.println(EntityUtils.toString(response.getEntity()));
        }
    
        /**
         * 获取
         */
        @Test
        public void GetIndexAPI() throws IOException {
            String method = "GET";
            String endpoint = "twitter/_doc/1";
            Response response = restClient.performRequest(method,endpoint);
            System.out.println(EntityUtils.toString(response.getEntity()));
        }
    
        /**
         * API还允许使用以下方式检查文档是否存在 HEAD:
         * 获取
         */
        @Test
        public void HeadIndexAPI() throws IOException {
            String method = "HEAD";
            String endpoint = "twitter/_doc/1";
            Response response = restClient.performRequest(method,endpoint);
            System.out.println(response.getEntity());
        }
    
        /**
         * ××××××
         * @throws IOException
         */
        public void OperationType() throws IOException {
            String method = "PUT";
            String endpoint = "twitter/docs/3";
            HttpEntity entity = new NStringEntity(
                    "{
    " +
                            "    "user" : "ssss",
    " +
                            "    "post_date" : "2009-11-15T14:12:12",
    " +
                            "    "message" : "Elasticsearch"
    " +
                            "}", ContentType.APPLICATION_JSON);
            Response response = restClient.performRequest(method,endpoint, Collections.<String, String>emptyMap(),entity);
            System.out.println(EntityUtils.toString(response.getEntity()));
        }
    
        /**
         * ××××××
         * 获取
         */
        @Test
        public void GetOperationType() throws IOException {
            String method = "GET";
            String endpoint ="twitter/docs/3";
            Response response = restClient.performRequest(method,endpoint);
            System.out.println(EntityUtils.toString(response.getEntity()));
        }
    
    
        /**
         * POST 产生一个随机id
         * @throws IOException
         */
        @Test
        public void IndexAPIPost() throws IOException {
            String method = "POST";
            String endpoint = "twitter/_doc";
            HttpEntity entity = new NStringEntity(
                    "{
    " +
                            "    "user" : "kimchy",
    " +
                            "    "post_date" : "2009-11-15T14:12:12",
    " +
                            "    "message" : "trying out Elasticsearch"
    " +
                            "}", ContentType.APPLICATION_JSON);
            Response response = restClient.performRequest(method,endpoint, Collections.<String, String>emptyMap(),entity);
            System.out.println(EntityUtils.toString(response.getEntity()));
        }
    
        /**
         * 获取 根据随机id
         * @throws IOException
         */
        @Test
        public void GetIndexAPIPost() throws IOException {
            String method = "GET";
            String endpoint = "twitter/_doc/EWq-LmkBioM-ebzVc1rq";
            Response response = restClient.performRequest(method,endpoint);
            System.out.println(EntityUtils.toString(response.getEntity()));
        }
    
        /**
         *Stored Fields
         *get操作允许指定将通过传递stored_fields参数返回的一组存储字段。如果未存储请求的字段,则将忽略它们。
         * 首先得添加相应映射
         */
    
        @Test
        public void Stored() throws IOException {
            String method = "PUT";
            String endpoint = "twitters";
            HttpEntity entity = new NStringEntity(
                    "{
    " +
                            "   "mappings": {
    " +
                            "      "_doc": {
    " +
                            "         "properties": {
    " +
                            "            "counter": {
    " +
                            "               "type": "integer",
    " +
                            "               "store": false
    " +
                            "            },
    " +
                            "            "tags": {
    " +
                            "               "type": "keyword",
    " +
                            "               "store": true
    " +
                            "            }
    " +
                            "         }
    " +
                            "      }
    " +
                            "   }
    " +
                            "}", ContentType.APPLICATION_JSON);
            Response response = restClient.performRequest(method,endpoint, Collections.<String, String>emptyMap(),entity);
            System.out.println(EntityUtils.toString(response.getEntity()));
        }
        @Test
        public void putS() throws IOException {
            String method = "PUT";
            String endpoint = "twitters/_doc/1";
            HttpEntity entity = new NStringEntity(
                    "{
    " +
                            "    "counter" : 1,
    " +
                            "    "tags" : ["red"]
    " +
                            "}", ContentType.APPLICATION_JSON);
            Response response = restClient.performRequest(method,endpoint, Collections.<String, String>emptyMap(),entity);
            System.out.println(EntityUtils.toString(response.getEntity()));
        }
    
        @Test
        public void getS() throws IOException {
            String method = "GET";
            String endpoint = "twitters/_doc/1?stored_fields=tags,counter";
            Response response = restClient.performRequest(method,endpoint);
            System.out.println(EntityUtils.toString(response.getEntity()));
            /**
             * {"_index":"twitters","_type":"_doc","_id":"1","_version":3,"found":true,"fields":{"tags":["red"]}}
             由于该counter字段未存储,因此get请求在尝试获取时只是忽略它stored_fields。map映射时,counter的store属性为false
             */
    
        }
    
        @Test
        public void putS2() throws IOException {
            String method = "PUT";
            String endpoint = "twitters/_doc/2?routing=user11";
            HttpEntity entity = new NStringEntity(
                    "{
    " +
                            "    "counter" : 1,
    " +
                            "    "tags" : ["white"]
    " +
                            "}", ContentType.APPLICATION_JSON);
            Response response = restClient.performRequest(method,endpoint, Collections.<String, String>emptyMap(),entity);
            System.out.println(EntityUtils.toString(response.getEntity()));
        }
    
        @Test
        public void getS2() throws IOException {
            String method = "GET";
            String endpoint = "twitters/_doc/2?routing=user11&stored_fields=tags,counter";
            /**
             * {"_index":"twitters","_type":"_doc","_id":"2","_version":2,"_routing":"user11","found":true,"fields":{"tags":["white"]}}
             * 使用控制路由的能力进行索引时,为了获取文档,还应提供路由值。
             */
            Response response = restClient.performRequest(method,endpoint);
            System.out.println(EntityUtils.toString(response.getEntity()));
        }
    
        @Test
        public void getTest() throws IOException {
            String method = "GET";
            String endpoint = "twitters/_doc/1/_source";
            /**
             * 只获取_source文档的字段,而不包含任何其他内容
             {
             "counter" : 1,
             "tags" : ["red"]
             }
             */
            Response response = restClient.performRequest(method,endpoint);
            System.out.println(EntityUtils.toString(response.getEntity()));
        }
    }
  • 相关阅读:
    移植Valgrind检测Android JNI内存泄漏
    【转】线性回归最小二乘法和梯度下降法
    【转】成为一名推荐系统工程师永远都不晚
    vue-element-admin使用常见问题
    SpringBoot中如何使用jpa和jpa的相关知识总结
    SpringBoot Controller接收参数的几种常用方式
    java项目其他基础配置
    eclipse 新建 maven 项目 + 消除错误
    vue城市三级联动组件 vue-area-linkage
    Vue中watch的简单应用
  • 原文地址:https://www.cnblogs.com/heqiyoujing/p/11148206.html
Copyright © 2020-2023  润新知