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<String> 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<String> 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<String, Object> result = new HashMap<String, Object>();
|
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;
|
}
|
}
|