• Java API 整合 ES Doc


    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/15210279.html

    Maven Dependency

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.fool</groupId>
        <artifactId>helloes</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.elasticsearch</groupId>
                <artifactId>elasticsearch</artifactId>
                <version>7.13.4</version>
            </dependency>
    
            <dependency>
                <groupId>org.elasticsearch.client</groupId>
                <artifactId>elasticsearch-rest-high-level-client</artifactId>
                <version>7.13.4</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-api</artifactId>
                <version>2.14.1</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>2.14.1</version>
            </dependency>
    
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.12.5</version>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.20</version>
            </dependency>
    
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13.2</version>
                <scope>test</scope>
            </dependency>
    
        </dependencies>
    
    </project>

    Prequisite

    User.java

    package org.fool.es.test;
    
    import lombok.Data;
    
    @Data
    public class User {
        private String name;
        private String sex;
        private Integer age;
    }

    JsonUtils.java

    package org.fool.es.test;
    
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.JavaType;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    import java.util.List;
    import java.util.Map;
    
    public class JsonUtils {
        private static final ObjectMapper MAPPER = new ObjectMapper();
    
        public static String objectToJson(Object data) {
            try {
                String result = MAPPER.writeValueAsString(data);
                return result;
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }
            return null;
        }
    
        public static <T> T jsonToBean(String jsonData, Class<T> beanType) {
            try {
                T result = MAPPER.readValue(jsonData, beanType);
                return result;
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            return null;
        }
    
        public static <T> List<T> jsonToList(String jsonData, Class<T> beanType) {
            JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
    
            try {
                List<T> resultList = MAPPER.readValue(jsonData, javaType);
                return resultList;
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            return null;
        }
    
        public static <K, V> Map<K, V> jsonToMap(String jsonData, Class<K> keyType, Class<V> valueType) {
            JavaType javaType = MAPPER.getTypeFactory().constructMapType(Map.class, keyType, valueType);
    
            try {
                Map<K, V> resultMap = MAPPER.readValue(jsonData, javaType);
                return resultMap;
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            return null;
        }
    }

    Doc Insert

    ESDocInsert.java

    package org.fool.es.test;
    
    import org.apache.http.HttpHost;
    import org.elasticsearch.action.index.IndexRequest;
    import org.elasticsearch.action.index.IndexResponse;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    import org.elasticsearch.common.xcontent.XContentType;
    
    import java.io.IOException;
    
    public class ESDocInsert {
        public static void main(String[] args) throws IOException {
            RestHighLevelClient client = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"))
            );
    
            User user = new User();
            user.setName("caocao2");
            user.setSex("female");
            user.setAge(30);
    
            IndexRequest indexRequest = new IndexRequest();
            indexRequest.index("user").id("1008");
            indexRequest.source(JsonUtils.objectToJson(user), XContentType.JSON);
    
            IndexResponse indexResponse = client.index(indexRequest, RequestOptions.DEFAULT);
    
            System.out.println(indexResponse.getResult());
    
            client.close();
        }
    }

    Console Output

    curl 

    curl --location --request GET 'http://127.0.0.1:9200/user/_doc/1008'

    Doc Get

    ESDocGet.java

    package org.fool.es.test;
    
    import org.apache.http.HttpHost;
    import org.elasticsearch.action.get.GetRequest;
    import org.elasticsearch.action.get.GetResponse;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    
    import java.io.IOException;
    
    public class ESDocGet {
        public static void main(String[] args) throws IOException {
            RestHighLevelClient client = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"))
            );
    
            GetRequest getRequest = new GetRequest();
            getRequest.index("user").id("1008");
    
            GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
    
            System.out.println(getResponse.getSourceAsString());
    
            client.close();
        }
    }

    Console Output

    Doc Update

    ESDocUpdate.java

    package org.fool.es.test;
    
    import org.apache.http.HttpHost;
    import org.elasticsearch.action.update.UpdateRequest;
    import org.elasticsearch.action.update.UpdateResponse;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    import org.elasticsearch.common.xcontent.XContentType;
    
    import java.io.IOException;
    
    public class ESDocUpdate {
        public static void main(String[] args) throws IOException {
            RestHighLevelClient client = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"))
            );
    
            UpdateRequest updateRequest = new UpdateRequest();
            updateRequest.index("user").id("1008");
            updateRequest.doc(XContentType.JSON, "sex", "male", "age", 40);
    
            UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);
    
            System.out.println(updateResponse.getResult());
    
            client.close();
        }
    }

    Console Output

    curl

    curl --location --request GET 'http://127.0.0.1:9200/user/_doc/1008'

    Doc Delete

    ESDocDelete.java

    package org.fool.es.test;
    
    import org.apache.http.HttpHost;
    import org.elasticsearch.action.delete.DeleteRequest;
    import org.elasticsearch.action.delete.DeleteResponse;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    
    import java.io.IOException;
    
    public class ESDocDelete {
        public static void main(String[] args) throws IOException {
            RestHighLevelClient client = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"))
            );
    
            DeleteRequest deleteRequest = new DeleteRequest();
            deleteRequest.index("user").id("1008");
    
            DeleteResponse deleteResponse = client.delete(deleteRequest, RequestOptions.DEFAULT);
    
            System.out.println(deleteResponse);
    
            client.close();
        }
    }

    Console Output

    curl

    curl --location --request GET 'http://127.0.0.1:9200/user/_doc/1008'

    Batch Insert

    ESDocBatchInsert.java

    package org.fool.es.test;
    
    import org.apache.http.HttpHost;
    import org.elasticsearch.action.bulk.BulkRequest;
    import org.elasticsearch.action.bulk.BulkResponse;
    import org.elasticsearch.action.index.IndexRequest;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    import org.elasticsearch.common.xcontent.XContentType;
    
    import java.io.IOException;
    import java.util.Arrays;
    
    public class ESDocBatchInsert {
        public static void main(String[] args) throws IOException {
            RestHighLevelClient client = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"))
            );
    
            BulkRequest bulkRequest = new BulkRequest();
    
            bulkRequest.add(new IndexRequest().index("user").id("1001").source(XContentType.JSON, "name", "caocao", "age", 10, "sex", "male"));
            bulkRequest.add(new IndexRequest().index("user").id("1002").source(XContentType.JSON, "name", "liubei", "age", 20, "sex", "male"));
            bulkRequest.add(new IndexRequest().index("user").id("1003").source(XContentType.JSON, "name", "sunquan", "age", 30, "sex", "male"));
            bulkRequest.add(new IndexRequest().index("user").id("1004").source(XContentType.JSON, "name", "guanyu", "age", 40, "sex", "male"));
            bulkRequest.add(new IndexRequest().index("user").id("1005").source(XContentType.JSON, "name", "zhangfei", "age", 40, "sex", "male"));
            bulkRequest.add(new IndexRequest().index("user").id("1006").source(XContentType.JSON, "name", "zhaoyun", "age", 50, "sex", "male"));
            bulkRequest.add(new IndexRequest().index("user").id("1007").source(XContentType.JSON, "name", "caocao2", "age", 50, "sex", "female"));
    
            BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);
            System.out.println(bulkResponse.getTook());
            System.out.println(Arrays.toString(bulkResponse.getItems()));
    
            client.close();
        }
    }

    Console Output

    curl

    curl --location --request GET 'http://127.0.0.1:9200/user/_search'

    Batch Delete

    ESDocBatchDelete.java

    package org.fool.es.test;
    
    import org.apache.http.HttpHost;
    import org.elasticsearch.action.bulk.BulkRequest;
    import org.elasticsearch.action.bulk.BulkResponse;
    import org.elasticsearch.action.delete.DeleteRequest;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    
    import java.io.IOException;
    import java.util.Arrays;
    
    public class ESDocBatchDelete {
        public static void main(String[] args) throws IOException {
            RestHighLevelClient client = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"))
            );
    
            BulkRequest bulkRequest = new BulkRequest();
    
            bulkRequest.add(new DeleteRequest().index("user").id("1001"));
            bulkRequest.add(new DeleteRequest().index("user").id("1002"));
            bulkRequest.add(new DeleteRequest().index("user").id("1003"));
            bulkRequest.add(new DeleteRequest().index("user").id("1004"));
            bulkRequest.add(new DeleteRequest().index("user").id("1005"));
            bulkRequest.add(new DeleteRequest().index("user").id("1006"));
            bulkRequest.add(new DeleteRequest().index("user").id("1007"));
    
            BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);
            System.out.println(bulkResponse.getTook());
            System.out.println(Arrays.toString(bulkResponse.getItems()));
    
            client.close();
        }
    }

    Console Output

    curl

    curl --location --request GET 'http://127.0.0.1:9200/user/_search'


    欢迎点赞关注和收藏

    强者自救 圣者渡人
  • 相关阅读:
    查看web访问日志各url shell
    分页公式
    编译hadoop2.6.0源码
    淘宝微信支付
    nodejs hot deployment
    nwjs
    css小技巧
    webpack babel 相关文章
    nodejs web framework
    swiper
  • 原文地址:https://www.cnblogs.com/agilestyle/p/15210279.html
Copyright © 2020-2023  润新知