Elasticearch JAVA API 高级客户端 增删查改操作

Elasticearch高级客户端MAVEN 依赖:版本请自行对应自己的ELasticearch数据库的版本

<dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>6.4.1</version>
 </dependency>


    /**
     * 连接Elasticearch数据库
     * @return
     * @throws UnknownHostException
     */
    public static RestHighLevelClient Server(){
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(new HttpHost("192.168.2.154", 9200, "http"))
                .setMaxRetryTimeoutMillis(5*60*1000)
                .setHttpClientConfigCallback(new HttpClientConfigCallback(){
                    public HttpAsyncClientBuilder customizeHttpClient(
                            HttpAsyncClientBuilder httpClientBuilder) {
                        RequestConfig.Builder requestConfigBuilder = RequestConfig.custom()
                                .setConnectTimeout(5*60*1000)//超时时间为5分钟
                                .setSocketTimeout(5*60*1000)//这就是Socket超时时间设置
                                .setConnectionRequestTimeout(5*60*1000);
                        httpClientBuilder.setDefaultRequestConfig(requestConfigBuilder.build());
                        return httpClientBuilder;
                    }    }));
                return client;
    }



1、添加索引和数据

    /**
     * 单条插入数据
     * @param client 连接的客户端
     * @param id 插入的ID
     * @param label_key
     * @param label_value
     * @throws IOException
     */
    public static void index(RestHighLevelClient client,String id,String label_key,String label_value){
        IndexRequest indexRequest = new IndexRequest("posts", "doc", id)
                .source(label_key, label_value);
        
        try {
            client.index(indexRequest, RequestOptions.DEFAULT);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

2、根据ID精确匹配Elasticearch数据库内的值

/**
     * 返回详细数据
     * @param client
     */
    public static void get(RestHighLevelClient client,String id){
        GetRequest getRequest = new GetRequest(
                TYPE,
                DOC,  
                id);   
        try {
            GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
            
            System.out.println(getResponse.getSource());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }


    /**
     * 只返回true 或者 false
     * @param client
     * @return
     */
    public static boolean exists(RestHighLevelClient client,String id){
        boolean exists = false;
        GetRequest getRequest = new GetRequest(
                TYPE,
                DOC,  
                id);    
        try {
            exists = client.exists(getRequest,RequestOptions.DEFAULT);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return exists;
    }

3、根据ID删除某条数据

/**
     * 删除某条数据
     * @param client
     */
    public static void Delete(RestHighLevelClient client){
        DeleteRequest request = new DeleteRequest(
                "label",    
                "_doc",     
                "123456");
        try {
            DeleteResponse deleteResponse = client.delete(request, RequestOptions.DEFAULT);
            
            System.out.println(deleteResponse.status());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

4、根据ID修改Elasticearch数据库中对应ID的数值

public static void update(RestHighLevelClient client) throws IOException{
        UpdateRequest request = new UpdateRequest("posts", "doc", "45645646556");
        String jsonString = "{" +
                "\"postDate\":\"2017-01-01\"," +
                "\"message\":\"daily update\"" +
                "}";
        request.doc(jsonString, XContentType.JSON);
        UpdateResponse updateResponse = client.update(request, RequestOptions.DEFAULT);
        System.out.println(updateResponse.status());
    }

5、批量处理

/**
     * 批量添加
     * @param client
     */
    public static void All_index(RestHighLevelClient client,Map<String, String> map,String type){
        BulkRequest request = new BulkRequest();

        for(String key : map.keySet()){
            String value = map.get(key);
            String values[] = value.split(",");
            if(values.length>=2){
                request.add(new IndexRequest(type, DOC ,key)  
                        .source(XContentType.JSON,values[0],values[1]));
            }else{
                for(int i = 0;i<values.length;i++){
                    System.out.println(values[i]+"valus值错误..."+values.length);
                }
                //                request.add(new IndexRequest("posts", "_doc", key)  
                //                        .source(XContentType.JSON,values[0],""));
            }
        }
        try {
            BulkResponse bulkResponse = client.bulk(request, RequestOptions.DEFAULT);
            System.err.println("批量提交的状态:"+bulkResponse.status());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            try {
                client.close();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            System.exit(0);
        }
    }

    /**
     * 批量更新
     * @param client
     */
    public static void All_update(RestHighLevelClient client,Map<String, String> map,String type){
        BulkRequest request = new BulkRequest();

        for(String key : map.keySet()){
            String value = map.get(key);
            String values[] = value.split(",");
            if(values.length>=2){
                request.add(new UpdateRequest(type, DOC, key)  
                        .doc(XContentType.JSON,values[0],values[1]));
            }else{
                for(int i = 0;i<values.length;i++){
                    System.out.println(values[i]+"valus值错误..."+values.length);
                }
                //                request.add(new UpdateRequest("posts", "_doc", key)  
                //                        .doc(XContentType.JSON,values[0],""));
            }
        }

        try {
            BulkResponse bulkResponse = client.bulk(request, RequestOptions.DEFAULT);
            System.err.println("批量提交的状态:"+bulkResponse.status());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            try {
                client.close();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            System.exit(0);
        }
    }

    /**
     * 批量查询
     * @param client
     */
    public static List<Map<String, String>> All_select(RestHighLevelClient client,Map<String, String> map,String type){
        List<Map<String, String>> olist = new ArrayList<Map<String,String>>();

        Map<String, String> map_true = new HashMap<String, String>();
        Map<String, String> map_false = new HashMap<String, String>();
        MultiGetRequest request = new MultiGetRequest();

        for(String key : map.keySet()){
            String value = map.get(key);
            String values[] = value.split(",");
            if(values.length==2){
                request.add(new MultiGetRequest.Item(type, DOC, key));
            }else{
                for(int i = 0;i<values.length;i++){
                    System.out.println(values[i]+"valus值错误..."+values.length);
                }
            }
        }

        try {

            MultiGetResponse response = client.mget(request, RequestOptions.DEFAULT);

            for(int i = 0 ;i <response.getResponses().length;i++){
                //                System.out.println(response.getResponses()[i].getResponse().isExists());
                String key  = "";
                String value = "";
                MultiGetItemResponse firstItem = response.getResponses()[i];
                if(firstItem.getResponse().isExists()){
                    key = firstItem.getId();
                    value = map.get(key);
                    map_true.put(key, value);
                }else{
                    key = firstItem.getId();
                    value = map.get(key);
                    map_false.put(key, value);
                }
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            try {
                client.close();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            System.exit(0);
        }
        olist.add(map_true);
        olist.add(map_false);

        return olist;
    }

猜你喜欢

转载自www.cnblogs.com/java-h/p/10584059.html
今日推荐