package com.cloud.attendance.utils; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.apache.http.client.ResponseHandler; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.BasicResponseHandler; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.IOException; import java.util.HashMap; import java.util.Map; @Slf4j @Component // 自己添加的,指定配置文件 --- 暂废 //@PropertySource(value = "classpath:es.properties", ignoreResourceNotFound = true) public class HttpClient { //ES集群中某个节点 private static String HOSTNAME = "192.168.1.203"; //连接端口号 private static int HTTP_PORT =9200; private static String esJson = "" ; // json 启动 赋值 public static String httpPostWithJson(String url, String json){ String returnValue = "这是默认返回值,接口调用失败"; CloseableHttpClient httpClient = HttpClients.createDefault(); ResponseHandler responseHandler = new BasicResponseHandler(); try{ //第一步:创建HttpClient对象 httpClient = HttpClients.createDefault(); //第二步:创建httpPost对象 HttpPost httpPost = new HttpPost("http://"+HOSTNAME+":"+HTTP_PORT+url); //第三步:给httpPost设置JSON格式的参数 StringEntity requestEntity = new StringEntity(json,"utf-8"); requestEntity.setContentEncoding("UTF-8"); httpPost.setHeader("Content-type", "application/json"); httpPost.setEntity(requestEntity); //第四步:发送HttpPost请求,获取返回值 long start = System.currentTimeMillis(); log.info("HttpClient开始时间: "+start); returnValue = httpClient.execute(httpPost,responseHandler); //调接口获取返回值时,必须用此方法 long end = System.currentTimeMillis(); log.info("HttpClient结束时间: "+end+"\n用时:"+(end-start)); } catch(Exception e) { e.printStackTrace(); } finally { try { httpClient.close(); } catch (IOException e){ e.printStackTrace(); } } //第五步:处理返回值 return returnValue; } public static String httpDelete(String url) { String returnValue = "这是默认返回值,接口调用失败"; CloseableHttpClient httpClient = HttpClients.createDefault(); ResponseHandler responseHandler = new BasicResponseHandler(); try{ //第一步:创建HttpClient对象 httpClient = HttpClients.createDefault(); //第二步:创建httpPost对象 HttpDelete httpDelete = new HttpDelete("http://"+HOSTNAME+":"+HTTP_PORT+url); //第三步:给httpPost设置JSON格式的参数 httpDelete.setHeader("Content-type", "application/json"); //第四步:发送HttpPost请求,获取返回值 long start = System.currentTimeMillis(); log.info("开始时间: "+start); returnValue = httpClient.execute(httpDelete,responseHandler); //调接口获取返回值时,必须用此方法 long end = System.currentTimeMillis(); log.info("删除结束时间: "+end+"\n用时:"+(end-start)); } catch(Exception e) { e.printStackTrace(); } finally { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } //第五步:处理返回值 return returnValue; } public static void main(String[] args) { // videopersons filebeat-6.3.0-2018.09.12 String url = "/videopersons/_search?scroll=1m"; //Post方式提交Json字符串,按照指定币种,指定时间点查询 // String json = "{\"size\": 5000,\"query\": {\"match_all\": {}}}"; String json = "{\"size\":100000,\"query\": {\"match_all\": {}}}"; long start = System.currentTimeMillis(); log.info("开始时间: "+start); String resultJson = HttpClient.httpPostWithJson(url, json); Map result = new HashMap(); if(resultJson!=null&&resultJson.startsWith("[")&&resultJson.endsWith("]")){ JSONArray parseArray = JSONObject.parseArray(resultJson);// ((String)resMap.get("response"), HashMap.class); result.put("resp", parseArray); }else if(resultJson!=null&&resultJson.startsWith("{")&&resultJson.endsWith("}")){ JSONObject resp = JSONObject.parseObject(resultJson); result.put("resp", resp); }else{ result.put("resp", JSONObject.parseObject("{\"msg\":\""+resultJson+"\"}")); } String scroll[] = returnTwoBySplit( resultJson); long end = System.currentTimeMillis(); log.info("结束时间包含转换: "+end+"\n用时:"+(end-start)); log.info(scroll[0]+"scroll"+scroll[1]); /* url = "/_search/scroll"; json = "{\"scroll\":\"1m\",\"scroll_id\" :\""+scroll+"\"}"; resultJson = HttpClient.HttpPostWithJson(url, json); resp = JSONObject.parseObject(resultJson); System.out.println(resp+"resp"); scroll = (String) resp.get("_scroll_id"); System.out.println(scroll+"scroll");*/ url = "/_search/scroll/_all"; resultJson = HttpClient.httpDelete(url); log.info(resultJson+"resultJson"); } public static String retunScrollIdBySubIndex(String resultJson){ String substring =""; if(resultJson.startsWith("{\"_scroll_id\":")){ substring = resultJson.substring(resultJson.indexOf("\"", 14), resultJson.indexOf("\"",20)).substring(1); log.info(substring+"substring"); } return substring; } public static String[] returnTwoBySplit(String resultJson){ String substring[] = new String[2];String subStr = ""; if(resultJson.startsWith("{\"_scroll_id\":")){ substring[0] = resultJson.substring(resultJson.indexOf("\"", 14), resultJson.indexOf("\"",20)).substring(1); log.info(substring[0]+" substring[0] "); subStr = resultJson.split("\"")[22]; substring[1] = subStr.substring(1,subStr.indexOf(",")); //:5000, log.info(substring[1]+" substring[1] "); } return substring; } public static String[] returnTwoBySplit2(String resultJson){ String substring[] = new String[2];String subStr = ""; if(resultJson.startsWith("{\"_scroll_id\":")){ String substr = resultJson.split("\"")[3]; substring[0] =substr; log.info( substring[0]+" substring[0]--_scroll_id "); subStr = resultJson.split("\"")[22]; substring[1] = subStr.substring(1,subStr.indexOf(",")); //:5000, log.info( substring[1] +" substring[1] --total "); } return substring; } public static String retunScrollIdBySplit(String resultJson){ String substring ="",substring2=""; if(resultJson.startsWith("{\"_scroll_id\":")){ substring = resultJson.split("\"")[3]; substring2 = substring.substring(1,substring.indexOf(",")); //:5000, System.out.println(substring2+"ScrollId"); } return substring2; } public static String getHOSTNAME(){ return HOSTNAME; } @Value("${es.es_network_host}") public void setHOSTNAME(String hOSTNAME){ HOSTNAME = hOSTNAME; } public static int getHTTP_PORT(){ return HTTP_PORT; } @Value("${es.es_network_http_port}") public void setHTTP_PORT(int tCP_PORT){ HTTP_PORT = tCP_PORT; } public static String getEsJson() { return esJson; } public static void setEsJson(String esJson) { HttpClient.esJson = esJson; } }