1. 添加依赖

<!-- https://mvnrepository.com/artifact/org.elasticsearch.client/elasticsearch-rest-client -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>8.2.2</version>
</dependency>
<!--引入json进行HTTP序列化-->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160810</version>
</dependency>

2. 代码,无账号密码

package com.xiaostudy.mycode;

import com.xiaostudy.mycode.entity.ESUser;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.util.EntityUtils;
import org.elasticsearch.client.Request;
import org.elasticsearch.client.Response;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.json.JSONArray;
import org.json.JSONObject; import java.io.IOException;
import java.lang.reflect.Field;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; /**
* @author liwei
* @version 1.0
* @className TestJDBC
* @date 2022/5/31 11:05
* @description 测试solr
*/
public class TestES { public static void main(String[] args) throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException, IOException {
RestClient client = getClient(); // createIndices(client, "user"); // boolean type = createType(client, "user", ESUser.class);
// System.out.println("=============================================");
// System.out.println("添加类的所有类型:" + type);
// System.out.println("============================================="); // ESUser user = new ESUser();
// user.setId("1");
// user.setName("11");
// user.setAge(1L);
// String add = addByPost(client, "user", user);
// System.out.println("=============================================");
// System.out.println("添加返回:" + add);
// System.out.println("============================================="); // ESUser user2 = new ESUser();
// user2.setId("3");
// user2.setName("张三");
// user2.setAge(33L);
// String add2 = addByPut(client, "user", user2);
// System.out.println("=============================================");
// System.out.println("添加返回:" + add2);
// System.out.println("============================================="); // getByIndicesAll(client, "user");
// getByIndicesId(client, "user", "2");
// getByIndicesType(client, "user", "id", "2");
// getByIndicesType(client, "user", "name", "11"); client.close();
} /**
* 获取索引下所有数据
*
* @param client
* @param indices
* @return java.util.List<com.xiaostudy.mycode.entity.ESUser>
* @author liwei
* @date 2022/6/6 11:00
*/
public static List<ESUser> getByIndicesId(RestClient client, String indices, String id) {
try {
Request request = new Request("GET", String.format("/%s/_search", indices)); JSONObject jsonObject2 = new JSONObject();
JSONObject jsonObject3 = new JSONObject();
JSONObject jsonObject4 = new JSONObject();
jsonObject4.put("default_field", "id");
jsonObject4.put("query", id);
jsonObject3.put("query_string", jsonObject4);
jsonObject2.put("query", jsonObject3);
request.setJsonEntity(jsonObject2.toString()); // 发送HTTP请求
Response response = client.performRequest(request); HttpEntity entity = response.getEntity();
String s = EntityUtils.toString(entity);
JSONObject jsonObject = new JSONObject(s);
JSONObject hits = jsonObject.getJSONObject("hits");
JSONArray jsonArray = hits.getJSONArray("hits");
List<Object> list = jsonArray.toList();
List<ESUser> userList = new ArrayList<>();
for (Object o : list) {
JSONObject jsonObject1 = null;
HashMap<String, Object> hashMap = null;
if (o instanceof JSONObject) {
jsonObject1 = ((JSONObject) o).getJSONObject("_source");
} else if (o instanceof HashMap) {
Object source = ((HashMap) o).get("_source");
if (source instanceof JSONObject) {
jsonObject1 = (JSONObject) source;
} else if (source instanceof HashMap) {
hashMap = (HashMap) source;
}
}
if (null == jsonObject1 && null == hashMap) {
System.out.println("这行取数据有问题");
continue;
}
ESUser user = new ESUser();
Object age;
if (null == jsonObject1) {
user.setId((String) hashMap.get("id"));
user.setName((String) hashMap.get("name"));
age = hashMap.get("age");
} else {
user.setId((String) jsonObject1.get("id"));
user.setName((String) jsonObject1.get("name"));
age = jsonObject1.get("age");
}
Long ageLong = null;
if (age instanceof Long) {
ageLong = (Long) age;
} else if (age instanceof Integer) {
ageLong = ((Integer) age).longValue();
}
user.setAge(ageLong);
userList.add(user);
}
System.out.println("=============================================");
System.out.println(userList);
System.out.println("=============================================");
return userList;
} catch (IOException e) {
e.printStackTrace();
}
return null;
} /**
* 获取索引下所有数据
*
* @param client
* @param indices
* @return java.util.List<com.xiaostudy.mycode.entity.ESUser>
* @author liwei
* @date 2022/6/6 11:00
*/
public static List<ESUser> getByIndicesType(RestClient client, String indices, String type, String typeValue) {
try {
Request request = new Request("GET", String.format("/%s/_search", indices)); JSONObject jsonObject2 = new JSONObject();
JSONObject jsonObject3 = new JSONObject();
JSONObject jsonObject4 = new JSONObject();
jsonObject4.put("default_field", type);
jsonObject4.put("query", typeValue);
jsonObject3.put("query_string", jsonObject4);
jsonObject2.put("query", jsonObject3);
request.setJsonEntity(jsonObject2.toString()); // 发送HTTP请求
Response response = client.performRequest(request); HttpEntity entity = response.getEntity();
String s = EntityUtils.toString(entity);
JSONObject jsonObject = new JSONObject(s);
JSONObject hits = jsonObject.getJSONObject("hits");
JSONArray jsonArray = hits.getJSONArray("hits");
List<Object> list = jsonArray.toList();
List<ESUser> userList = new ArrayList<>();
for (Object o : list) {
JSONObject jsonObject1 = null;
HashMap<String, Object> hashMap = null;
if (o instanceof JSONObject) {
jsonObject1 = ((JSONObject) o).getJSONObject("_source");
} else if (o instanceof HashMap) {
Object source = ((HashMap) o).get("_source");
if (source instanceof JSONObject) {
jsonObject1 = (JSONObject) source;
} else if (source instanceof HashMap) {
hashMap = (HashMap) source;
}
}
if (null == jsonObject1 && null == hashMap) {
System.out.println("这行取数据有问题");
continue;
}
ESUser user = new ESUser();
Object age;
if (null == jsonObject1) {
user.setId((String) hashMap.get("id"));
user.setName((String) hashMap.get("name"));
age = hashMap.get("age");
} else {
user.setId((String) jsonObject1.get("id"));
user.setName((String) jsonObject1.get("name"));
age = jsonObject1.get("age");
}
Long ageLong = null;
if (age instanceof Long) {
ageLong = (Long) age;
} else if (age instanceof Integer) {
ageLong = ((Integer) age).longValue();
}
user.setAge(ageLong);
userList.add(user);
}
System.out.println("=============================================");
System.out.println(userList);
System.out.println("=============================================");
return userList;
} catch (IOException e) {
e.printStackTrace();
}
return null;
} /**
* 获取索引下所有数据
*
* @param client
* @param indices
* @return java.util.List<com.xiaostudy.mycode.entity.ESUser>
* @author liwei
* @date 2022/6/6 11:00
*/
public static List<ESUser> getByIndicesAll(RestClient client, String indices) {
try {
// endpoint直接指定为index/type的形式
Request request = new Request("GET", String.format("/%s/_search", indices)); // 发送HTTP请求
Response response = client.performRequest(request); System.out.println("=============================================");
// System.out.println(response);
HttpEntity entity = response.getEntity();
String s = EntityUtils.toString(entity);
JSONObject jsonObject = new JSONObject(s);
JSONObject hits = jsonObject.getJSONObject("hits");
JSONArray jsonArray = hits.getJSONArray("hits");
List<Object> list = jsonArray.toList();
List<ESUser> userList = new ArrayList<>();
for (Object o : list) {
JSONObject jsonObject1 = null;
HashMap<String, Object> hashMap = null;
if (o instanceof JSONObject) {
jsonObject1 = ((JSONObject) o).getJSONObject("_source");
} else if (o instanceof HashMap) {
Object source = ((HashMap) o).get("_source");
if (source instanceof JSONObject) {
jsonObject1 = (JSONObject) source;
} else if (source instanceof HashMap) {
hashMap = (HashMap) source;
}
}
if (null == jsonObject1 && null == hashMap) {
System.out.println("这行取数据有问题");
continue;
}
ESUser user = new ESUser();
Object age;
if (null == jsonObject1) {
user.setId((String) hashMap.get("id"));
user.setName((String) hashMap.get("name"));
age = hashMap.get("age");
} else {
user.setId((String) jsonObject1.get("id"));
user.setName((String) jsonObject1.get("name"));
age = jsonObject1.get("age");
}
Long ageLong = null;
if (age instanceof Long) {
ageLong = (Long) age;
} else if (age instanceof Integer) {
ageLong = ((Integer) age).longValue();
}
user.setAge(ageLong);
userList.add(user);
}
System.out.println(userList);
System.out.println("============================================="); return userList;
} catch (IOException e) {
e.printStackTrace();
return null;
}
} /**
* 添加,id就是实体里面的id
*
* @param client
* @param indices
* @param user
* @return java.lang.String
* @author liwei
* @date 2022/6/2 23:18
*/
public static String addByPut(RestClient client, String indices, ESUser user) {
try {
// endpoint直接指定为index/type的形式
Request request = new Request("PUT", String.format("/%s/_doc/%s", indices, user.getId()));
JSONObject jsonObject = new JSONObject(user);
// 设置请求体并指定ContentType,如果不指定默认为APPLICATION_JSON
request.setJsonEntity(jsonObject.toString()); // 发送HTTP请求
Response response = client.performRequest(request); // 获取响应体, id: AWXvzZYWXWr3RnGSLyhH
return EntityUtils.toString(response.getEntity());
} catch (IOException e) {
e.printStackTrace();
return null;
}
} /**
* 添加,id随机生成
*
* @param client
* @param indices
* @param user
* @return java.lang.String
* @author liwei
* @date 2022/6/2 23:18
*/
public static String addByPost(RestClient client, String indices, ESUser user) {
try {
// endpoint直接指定为index/type的形式
Request request = new Request("POST", String.format("/%s/_doc", indices));
JSONObject jsonObject = new JSONObject(user);
// 设置请求体并指定ContentType,如果不指定默认为APPLICATION_JSON
request.setJsonEntity(jsonObject.toString()); // 发送HTTP请求
Response response = client.performRequest(request); // 获取响应体, id: AWXvzZYWXWr3RnGSLyhH
return EntityUtils.toString(response.getEntity());
} catch (IOException e) {
e.printStackTrace();
return null;
}
} /**
* 创建类型,创建类的所有类型,已有的类型就不再创建
*
* @param client
* @param indices
* @param clazz
* @return boolean
* @author liwei
* @date 2022/6/2 23:19
*/
public static boolean createType(RestClient client, String indices, Class clazz) {
try {
Request request = new Request("PUT", String.format("%s/_mapping", indices));
Field[] declaredFields = clazz.getDeclaredFields();
JSONObject jsonObject1 = new JSONObject();
JSONObject jsonObject2 = new JSONObject();
for (Field field : declaredFields) {
Class<?> type = field.getType();
String typeValue;
if (type == String.class) {
typeValue = "text";
} else if (type == Integer.class) {
typeValue = "integer";
} else if (type == Long.class) {
typeValue = "long";
} else if (type == Short.class) {
typeValue = "short";
} else if (type == Byte.class) {
typeValue = "byte";
} else if (type == Double.class) {
typeValue = "double";
} else if (type == Float.class) {
typeValue = "float";
} else if (type == Boolean.class) {
typeValue = "boolean";
} else {
typeValue = "text";
}
String fieldName = field.getName();
String s = getType(client, indices, fieldName);
if (null != s) {
continue;
} JSONObject jsonObject3 = new JSONObject();
jsonObject3.put("type", typeValue);
jsonObject2.put(fieldName, jsonObject3);
}
if (jsonObject2.keySet().isEmpty()) {
return false;
}
jsonObject1.put("properties", jsonObject2);
// 设置请求体并指定ContentType,如果不指定默认为APPLICATION_JSON
request.setJsonEntity(jsonObject1.toString()); Response response = client.performRequest(request);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
} /**
* 创建类型,指定类型
*
* @param client
* @param indices
* @param type
* @param typeValue
* @return java.lang.String
* @author liwei
* @date 2022/6/2 23:19
*/
public static String createType(RestClient client, String indices, String type, String typeValue) {
String s = getType(client, indices, type);
if (null != s) {
return null;
}
try {
Request request = new Request("PUT", String.format("%s/_mapping", indices)); JSONObject jsonObject1 = new JSONObject();
JSONObject jsonObject2 = new JSONObject();
JSONObject jsonObject3 = new JSONObject();
jsonObject3.put("type", typeValue);
jsonObject2.put(type, jsonObject3);
jsonObject1.put("properties", jsonObject2);
// 设置请求体并指定ContentType,如果不指定默认为APPLICATION_JSON
request.setJsonEntity(jsonObject1.toString()); Response response = client.performRequest(request); return EntityUtils.toString(response.getEntity());
} catch (IOException e) {
e.printStackTrace();
return null;
}
} /**
* 查询索引是否有该类型
*
* @param client
* @param indices
* @param type
* @return java.lang.String
* @author liwei
* @date 2022/6/2 23:18
*/
public static String getType(RestClient client, String indices, String type) {
try {
Request request = new Request("GET", String.format("%s/_mapping", indices));
Response response = client.performRequest(request);
String responseBody = EntityUtils.toString(response.getEntity());
if (null == responseBody) {
return null;
}
JSONObject jsonObject = new JSONObject(responseBody);
JSONObject jsonObject1 = jsonObject.getJSONObject(indices);
if (null == jsonObject1) {
return null;
}
JSONObject mappings = jsonObject1.getJSONObject("mappings");
System.out.println("=============================================");
System.out.println(mappings);
System.out.println("=============================================");
if (null == mappings) {
return null;
}
JSONObject properties = mappings.getJSONObject("properties");
if (null == properties) {
return null;
} return properties.has(type) ? type : null; } catch (Exception e) {
e.printStackTrace();
return null;
}
} /**
* 创建索引,不存在则创建
*
* @param client
* @param indices
* @return java.lang.String
* @author liwei
* @date 2022/6/2 20:24
*/
public static String createIndices(RestClient client, String indices) {
String index = getIndices(client, indices);
if (null != index) {
return null;
}
try {
// 构造HTTP请求,第一个参数是请求方法,第二个参数是服务器的端点,host默认是http://localhost:9200,
// endpoint直接指定为index/type的形式
Request request = new Request("PUT", indices); // 发送HTTP请求
Response response = client.performRequest(request); // 获取响应体, id: AWXvzZYWXWr3RnGSLyhH
return EntityUtils.toString(response.getEntity());
} catch (IOException e) {
e.printStackTrace();
return null;
}
} /**
* 查询索引是否存在,存在返回,不存在返回null
*
* @param client
* @param indices
* @return java.lang.String
* @author liwei
* @date 2022/6/2 20:24
*/
public static String getIndices(RestClient client, String indices) {
try {
Request request = new Request("GET", indices);
Response response = client.performRequest(request);
String responseBody = EntityUtils.toString(response.getEntity());
System.out.println("=============================================");
System.out.println(responseBody);
System.out.println("=============================================");
return responseBody;
} catch (IOException e) {
e.printStackTrace();
return null;
}
} /**
* 获取客户端
*
* @return org.elasticsearch.client.RestClient
* @author liwei
* @date 2022/6/2 23:18
*/
public static RestClient getClient() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
// 如果有多个从节点可以持续在内部new多个HttpHost,参数1是ip,参数2是HTTP端口,参数3是通信协议
RestClientBuilder clientBuilder = RestClient.builder(new HttpHost("localhost", 9200, "http")); // 最后配置好的clientBuilder再build一下即可得到真正的Client
return clientBuilder.build();
}
}

3. 代码,有账号密码,并且是https方式

package com.xiaostudy.mycode;

import com.xiaostudy.mycode.entity.ESUser;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.apache.http.message.BasicHeader;
import org.apache.http.ssl.SSLContextBuilder;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.util.EntityUtils;
import org.elasticsearch.client.Request;
import org.elasticsearch.client.Response;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.json.JSONArray;
import org.json.JSONObject; import javax.net.ssl.SSLContext;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; /**
* @author liwei
* @version 1.0
* @className TestJDBC
* @date 2022/5/31 11:05
* @description 测试solr
*/
public class TestES { public static void main(String[] args) throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException, IOException, CertificateException {
RestClient client = getClient(); // createIndices(client, "user"); // boolean type = createType(client, "user", ESUser.class);
// System.out.println("=============================================");
// System.out.println("添加类的所有类型:" + type);
// System.out.println("============================================="); // ESUser user = new ESUser();
// user.setId("1");
// user.setName("11");
// user.setAge(1L);
// String add = addByPost(client, "user", user);
// System.out.println("=============================================");
// System.out.println("添加返回:" + add);
// System.out.println("============================================="); // ESUser user2 = new ESUser();
// user2.setId("3");
// user2.setName("张三");
// user2.setAge(33L);
// String add2 = addByPut(client, "user", user2);
// System.out.println("=============================================");
// System.out.println("添加返回:" + add2);
// System.out.println("============================================="); // getByIndicesAll(client, "user");
// getByIndicesId(client, "user", "2");
// getByIndicesType(client, "user", "id", "2");
getByIndicesType(client, "user", "name", "11"); client.close();
} /**
* 获取索引下所有数据
*
* @param client
* @param indices
* @return java.util.List<com.xiaostudy.mycode.entity.ESUser>
* @author liwei
* @date 2022/6/6 11:00
*/
public static List<ESUser> getByIndicesId(RestClient client, String indices, String id) {
try {
Request request = new Request("GET", String.format("/%s/_search", indices)); JSONObject jsonObject2 = new JSONObject();
JSONObject jsonObject3 = new JSONObject();
JSONObject jsonObject4 = new JSONObject();
jsonObject4.put("default_field", "id");
jsonObject4.put("query", id);
jsonObject3.put("query_string", jsonObject4);
jsonObject2.put("query", jsonObject3);
request.setJsonEntity(jsonObject2.toString()); // 发送HTTP请求
Response response = client.performRequest(request); HttpEntity entity = response.getEntity();
String s = EntityUtils.toString(entity);
JSONObject jsonObject = new JSONObject(s);
JSONObject hits = jsonObject.getJSONObject("hits");
JSONArray jsonArray = hits.getJSONArray("hits");
List<Object> list = jsonArray.toList();
List<ESUser> userList = new ArrayList<>();
for (Object o : list) {
JSONObject jsonObject1 = null;
HashMap<String, Object> hashMap = null;
if (o instanceof JSONObject) {
jsonObject1 = ((JSONObject) o).getJSONObject("_source");
} else if (o instanceof HashMap) {
Object source = ((HashMap) o).get("_source");
if (source instanceof JSONObject) {
jsonObject1 = (JSONObject) source;
} else if (source instanceof HashMap) {
hashMap = (HashMap) source;
}
}
if (null == jsonObject1 && null == hashMap) {
System.out.println("这行取数据有问题");
continue;
}
ESUser user = new ESUser();
Object age;
if (null == jsonObject1) {
user.setId((String) hashMap.get("id"));
user.setName((String) hashMap.get("name"));
age = hashMap.get("age");
} else {
user.setId((String) jsonObject1.get("id"));
user.setName((String) jsonObject1.get("name"));
age = jsonObject1.get("age");
}
Long ageLong = null;
if (age instanceof Long) {
ageLong = (Long) age;
} else if (age instanceof Integer) {
ageLong = ((Integer) age).longValue();
}
user.setAge(ageLong);
userList.add(user);
}
System.out.println("=============================================");
System.out.println(userList);
System.out.println("=============================================");
return userList;
} catch (IOException e) {
e.printStackTrace();
}
return null;
} /**
* 获取索引下所有数据
*
* @param client
* @param indices
* @return java.util.List<com.xiaostudy.mycode.entity.ESUser>
* @author liwei
* @date 2022/6/6 11:00
*/
public static List<ESUser> getByIndicesType(RestClient client, String indices, String type, String typeValue) {
try {
Request request = new Request("GET", String.format("/%s/_search", indices)); JSONObject jsonObject2 = new JSONObject();
JSONObject jsonObject3 = new JSONObject();
JSONObject jsonObject4 = new JSONObject();
jsonObject4.put("default_field", type);
jsonObject4.put("query", typeValue);
jsonObject3.put("query_string", jsonObject4);
jsonObject2.put("query", jsonObject3);
request.setJsonEntity(jsonObject2.toString()); // 发送HTTP请求
Response response = client.performRequest(request); HttpEntity entity = response.getEntity();
String s = EntityUtils.toString(entity);
JSONObject jsonObject = new JSONObject(s);
JSONObject hits = jsonObject.getJSONObject("hits");
JSONArray jsonArray = hits.getJSONArray("hits");
List<Object> list = jsonArray.toList();
List<ESUser> userList = new ArrayList<>();
for (Object o : list) {
JSONObject jsonObject1 = null;
HashMap<String, Object> hashMap = null;
if (o instanceof JSONObject) {
jsonObject1 = ((JSONObject) o).getJSONObject("_source");
} else if (o instanceof HashMap) {
Object source = ((HashMap) o).get("_source");
if (source instanceof JSONObject) {
jsonObject1 = (JSONObject) source;
} else if (source instanceof HashMap) {
hashMap = (HashMap) source;
}
}
if (null == jsonObject1 && null == hashMap) {
System.out.println("这行取数据有问题");
continue;
}
ESUser user = new ESUser();
Object age;
if (null == jsonObject1) {
user.setId((String) hashMap.get("id"));
user.setName((String) hashMap.get("name"));
age = hashMap.get("age");
} else {
user.setId((String) jsonObject1.get("id"));
user.setName((String) jsonObject1.get("name"));
age = jsonObject1.get("age");
}
Long ageLong = null;
if (age instanceof Long) {
ageLong = (Long) age;
} else if (age instanceof Integer) {
ageLong = ((Integer) age).longValue();
}
user.setAge(ageLong);
userList.add(user);
}
System.out.println("=============================================");
System.out.println(userList);
System.out.println("=============================================");
return userList;
} catch (IOException e) {
e.printStackTrace();
}
return null;
} /**
* 获取索引下所有数据
*
* @param client
* @param indices
* @return java.util.List<com.xiaostudy.mycode.entity.ESUser>
* @author liwei
* @date 2022/6/6 11:00
*/
public static List<ESUser> getByIndicesAll(RestClient client, String indices) {
try {
// endpoint直接指定为index/type的形式
Request request = new Request("GET", String.format("/%s/_search", indices)); // 发送HTTP请求
Response response = client.performRequest(request); System.out.println("=============================================");
// System.out.println(response);
HttpEntity entity = response.getEntity();
String s = EntityUtils.toString(entity);
JSONObject jsonObject = new JSONObject(s);
JSONObject hits = jsonObject.getJSONObject("hits");
JSONArray jsonArray = hits.getJSONArray("hits");
List<Object> list = jsonArray.toList();
List<ESUser> userList = new ArrayList<>();
for (Object o : list) {
JSONObject jsonObject1 = null;
HashMap<String, Object> hashMap = null;
if (o instanceof JSONObject) {
jsonObject1 = ((JSONObject) o).getJSONObject("_source");
} else if (o instanceof HashMap) {
Object source = ((HashMap) o).get("_source");
if (source instanceof JSONObject) {
jsonObject1 = (JSONObject) source;
} else if (source instanceof HashMap) {
hashMap = (HashMap) source;
}
}
if (null == jsonObject1 && null == hashMap) {
System.out.println("这行取数据有问题");
continue;
}
ESUser user = new ESUser();
Object age;
if (null == jsonObject1) {
user.setId((String) hashMap.get("id"));
user.setName((String) hashMap.get("name"));
age = hashMap.get("age");
} else {
user.setId((String) jsonObject1.get("id"));
user.setName((String) jsonObject1.get("name"));
age = jsonObject1.get("age");
}
Long ageLong = null;
if (age instanceof Long) {
ageLong = (Long) age;
} else if (age instanceof Integer) {
ageLong = ((Integer) age).longValue();
}
user.setAge(ageLong);
userList.add(user);
}
System.out.println(userList);
System.out.println("============================================="); return userList;
} catch (IOException e) {
e.printStackTrace();
return null;
}
} /**
* 添加,id就是实体里面的id
*
* @param client
* @param indices
* @param user
* @return java.lang.String
* @author liwei
* @date 2022/6/2 23:18
*/
public static String addByPut(RestClient client, String indices, ESUser user) {
try {
// endpoint直接指定为index/type的形式
Request request = new Request("PUT", String.format("/%s/_doc/%s", indices, user.getId()));
JSONObject jsonObject = new JSONObject(user);
// 设置请求体并指定ContentType,如果不指定默认为APPLICATION_JSON
request.setJsonEntity(jsonObject.toString()); // 发送HTTP请求
Response response = client.performRequest(request); // 获取响应体, id: AWXvzZYWXWr3RnGSLyhH
return EntityUtils.toString(response.getEntity());
} catch (IOException e) {
e.printStackTrace();
return null;
}
} /**
* 添加,id随机生成
*
* @param client
* @param indices
* @param user
* @return java.lang.String
* @author liwei
* @date 2022/6/2 23:18
*/
public static String addByPost(RestClient client, String indices, ESUser user) {
try {
// endpoint直接指定为index/type的形式
Request request = new Request("POST", String.format("/%s/_doc", indices));
JSONObject jsonObject = new JSONObject(user);
// 设置请求体并指定ContentType,如果不指定默认为APPLICATION_JSON
request.setJsonEntity(jsonObject.toString()); // 发送HTTP请求
Response response = client.performRequest(request); // 获取响应体, id: AWXvzZYWXWr3RnGSLyhH
return EntityUtils.toString(response.getEntity());
} catch (IOException e) {
e.printStackTrace();
return null;
}
} /**
* 创建类型,创建类的所有类型,已有的类型就不再创建
*
* @param client
* @param indices
* @param clazz
* @return boolean
* @author liwei
* @date 2022/6/2 23:19
*/
public static boolean createType(RestClient client, String indices, Class clazz) {
try {
Request request = new Request("PUT", String.format("%s/_mapping", indices));
Field[] declaredFields = clazz.getDeclaredFields();
JSONObject jsonObject1 = new JSONObject();
JSONObject jsonObject2 = new JSONObject();
for (Field field : declaredFields) {
Class<?> type = field.getType();
String typeValue;
if (type == String.class) {
typeValue = "text";
} else if (type == Integer.class) {
typeValue = "integer";
} else if (type == Long.class) {
typeValue = "long";
} else if (type == Short.class) {
typeValue = "short";
} else if (type == Byte.class) {
typeValue = "byte";
} else if (type == Double.class) {
typeValue = "double";
} else if (type == Float.class) {
typeValue = "float";
} else if (type == Boolean.class) {
typeValue = "boolean";
} else {
typeValue = "text";
}
String fieldName = field.getName();
String s = getType(client, indices, fieldName);
if (null != s) {
continue;
} JSONObject jsonObject3 = new JSONObject();
jsonObject3.put("type", typeValue);
jsonObject2.put(fieldName, jsonObject3);
}
if (jsonObject2.keySet().isEmpty()) {
return false;
}
jsonObject1.put("properties", jsonObject2);
// 设置请求体并指定ContentType,如果不指定默认为APPLICATION_JSON
request.setJsonEntity(jsonObject1.toString()); Response response = client.performRequest(request);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
} /**
* 创建类型,指定类型
*
* @param client
* @param indices
* @param type
* @param typeValue
* @return java.lang.String
* @author liwei
* @date 2022/6/2 23:19
*/
public static String createType(RestClient client, String indices, String type, String typeValue) {
String s = getType(client, indices, type);
if (null != s) {
return null;
}
try {
Request request = new Request("PUT", String.format("%s/_mapping", indices)); JSONObject jsonObject1 = new JSONObject();
JSONObject jsonObject2 = new JSONObject();
JSONObject jsonObject3 = new JSONObject();
jsonObject3.put("type", typeValue);
jsonObject2.put(type, jsonObject3);
jsonObject1.put("properties", jsonObject2);
// 设置请求体并指定ContentType,如果不指定默认为APPLICATION_JSON
request.setJsonEntity(jsonObject1.toString()); Response response = client.performRequest(request); return EntityUtils.toString(response.getEntity());
} catch (IOException e) {
e.printStackTrace();
return null;
}
} /**
* 查询索引是否有该类型
*
* @param client
* @param indices
* @param type
* @return java.lang.String
* @author liwei
* @date 2022/6/2 23:18
*/
public static String getType(RestClient client, String indices, String type) {
try {
Request request = new Request("GET", String.format("%s/_mapping", indices));
Response response = client.performRequest(request);
String responseBody = EntityUtils.toString(response.getEntity());
if (null == responseBody) {
return null;
}
JSONObject jsonObject = new JSONObject(responseBody);
JSONObject jsonObject1 = jsonObject.getJSONObject(indices);
if (null == jsonObject1) {
return null;
}
JSONObject mappings = jsonObject1.getJSONObject("mappings");
System.out.println("=============================================");
System.out.println(mappings);
System.out.println("=============================================");
if (null == mappings) {
return null;
}
JSONObject properties = mappings.getJSONObject("properties");
if (null == properties) {
return null;
} return properties.has(type) ? type : null; } catch (Exception e) {
e.printStackTrace();
return null;
}
} /**
* 创建索引,不存在则创建
*
* @param client
* @param indices
* @return java.lang.String
* @author liwei
* @date 2022/6/2 20:24
*/
public static String createIndices(RestClient client, String indices) {
String index = getIndices(client, indices);
if (null != index) {
return null;
}
try {
// 构造HTTP请求,第一个参数是请求方法,第二个参数是服务器的端点,host默认是http://localhost:9200,
// endpoint直接指定为index/type的形式
Request request = new Request("PUT", indices); // 发送HTTP请求
Response response = client.performRequest(request); // 获取响应体, id: AWXvzZYWXWr3RnGSLyhH
return EntityUtils.toString(response.getEntity());
} catch (IOException e) {
e.printStackTrace();
return null;
}
} /**
* 查询索引是否存在,存在返回,不存在返回null
*
* @param client
* @param indices
* @return java.lang.String
* @author liwei
* @date 2022/6/2 20:24
*/
public static String getIndices(RestClient client, String indices) {
try {
Request request = new Request("GET", indices);
Response response = client.performRequest(request);
String responseBody = EntityUtils.toString(response.getEntity());
System.out.println("=============================================");
System.out.println(responseBody);
System.out.println("=============================================");
return responseBody;
} catch (IOException e) {
e.printStackTrace();
return null;
}
} /**
* 获取客户端
*
* @return org.elasticsearch.client.RestClient
* @author liwei
* @date 2022/6/2 23:18
*/
public static RestClient getClient() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException, CertificateException, IOException {
// 如果有多个从节点可以持续在内部new多个HttpHost,参数1是ip,参数2是HTTP端口,参数3是通信协议
// RestClientBuilder clientBuilder = RestClient.builder(new HttpHost("localhost", 9200, "http"));
RestClientBuilder clientBuilder = RestClient.builder(new HttpHost("localhost", 9200, "https")); final CredentialsProvider credentialsProvider =
new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials("elastic", "123456")); // TODO 注意安装路径
Path caCertificatePath = Paths.get("F:\\安装包\\elasticsearch-8.2.2\\config\\certs\\http_ca.crt");
CertificateFactory factory =
CertificateFactory.getInstance("X.509");
Certificate trustedCa;
try (InputStream is = Files.newInputStream(caCertificatePath)) {
trustedCa = factory.generateCertificate(is);
}
KeyStore trustStore = KeyStore.getInstance("pkcs12");
trustStore.load(null, null);
trustStore.setCertificateEntry("ca", trustedCa);
SSLContextBuilder sslContextBuilder = SSLContexts.custom()
.loadTrustMaterial(trustStore, null);
final SSLContext sslContext = sslContextBuilder.build(); clientBuilder.setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setSSLContext(sslContext).setDefaultCredentialsProvider(credentialsProvider)); return clientBuilder.build();
}
}

4. 参考文章

ElasticSearch入门篇(保姆级教程)

Java 连接ES方式

Elasticsearch:使用 Elasticsearch Java client 8.0 来连接带有 HTTPS 的集群

Java连接简单使用ElasticSearch的更多相关文章

  1. Java连接MySQL数据库及简单操作代码

    1.Java连接MySQL数据库 Java连接MySql需要下载JDBC驱动MySQL-connector-java-5.0.5.zip(举例,现有新版本).然后将其解压缩到任一目录.我是解压到D盘, ...

  2. Java连接Sql Server 2008的简单数据库应用

    1.从微软官网下载JDBC驱动包 sqljdbc_4.0.2206.100_chs.exe,双击解压文件到指定目录,我的指定目录是: C:\Program Files\Microsoft JDBC D ...

  3. java 模拟简单搜索

    Java 模拟简单搜索 实体类 package org.dennisit.entity; /** * * * @version : 1.0 * * @author : 苏若年 <a href=& ...

  4. 几个主流java连接池

    池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销.这里所说的池是一种广义上的池,比如数据库连接池.线程池.内存池.对象池等.其中,对象池可以看成保存对 ...

  5. java连接sql server2000/2005

    接触Java或者JSP,难免会使用到数据库SQL Server 2000/2005(我使用2005标准版[9.0.3054]测试),经过自己的搜索和研究,使用JDBC连接SQL Server成功,特此 ...

  6. Java 连接MongoDB

    1.驱动 通过java连接MongoDB需要一个java版的驱动 下载地址:http://mongodb.github.io/mongo-java-driver/ 2.连接MongoDB 通过 com ...

  7. Java连接redis的使用演示样例

    Java连接redis的使用演示样例 Redis是开源的key-value存储工具,redis通经常使用来存储结构化的数据,由于redis的key能够包括String.hash.listset和sor ...

  8. 转载:Java连接MySQL 数据库的正确操作流程

    转载网址:http://www.bitscn.com/pdb/mysql/201005/186551.html       以下的文章主要介绍的是Java连接MySQL 数据库(以MySQL数据库为例 ...

  9. java实现简单的单点登录

    java实现简单的单点登录 摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中.本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现 ...

随机推荐

  1. 【Golang】程序如何优雅的退出?

    1. 背景 项目开发过程中,随着需求的迭代,代码的发布会频繁进行,在发布过程中,如何让程序做到优雅的退出? 为什么需要优雅的退出? 你的 http 服务,监听端口没有关闭,客户的请求发过来了,但处理了 ...

  2. Java基础-JVM篇

    1.1 .线程 ​ 这里所说的线程指程序执行过程中的一个线程实体.JVM 允许一个应用并发执行多个线程.Hotspot JVM 中的 Java 线程与原生操作系统线程有直接的映射关系.当线程本地存储. ...

  3. .NET程序配置文件操作(ini,cfg,config)

    在程序开发过程中,我们一般会用到配置文件来设定一些参数.常见的配置文件格式为 ini, xml, config等. INI .ini文件,通常为初始化文件,是用来存储程序配置信息的文本文件. [Log ...

  4. NC20012 [HEOI2014]南园满地堆轻絮

    NC20012 [HEOI2014]南园满地堆轻絮 题目 题目描述 小 Z 是 ZRP(Zombies' Republic of Poetry,僵尸诗歌共和国)的一名诗歌爱好者,最近他研究起了诗词音律 ...

  5. cmd中常用的dos命令

    在电脑中除了我们常见的图形界面之外,图形页面的操作相信都会.那么还有在cmd执行的一些dos命令,可以简单记一下,方便日后复习所用 首先打开cmd窗口,windows+R,然后在对话框输入cmd,进入 ...

  6. mesi--cpu内存一致性协议

    目录 cpu缓存一致性问题 mesi协议 mesi协议4种状态,及状态转换 模拟工具演示 cpu缓存一致性问题 一个服务器中有多个核,每个核中有多个cpu,每个cpu有多个线程.缓存最少分为3级,1级 ...

  7. 【ASP.NET Core】自定义的配置源

    本文的主题是简单说说如何实现 IConfigurationSource.IConfigurationProvider 接口来自定义一个配置信息的来源,后面老周给的示例是实现用 CSV 文件进行应用配置 ...

  8. Kafka启动遇到ERROR Exiting Kafka due to fatal exception (kafka.Kafka$)

    ------------恢复内容开始------------ Kafka启动遇到ERROR Exiting Kafka due to fatal exception (kafka.Kafka$) 解决 ...

  9. docker容器数据管理

    Docker容器数据卷 Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷(Data Volume). 数据卷可以用来存储Docker应用的数据,也可以用来在Docke ...

  10. Solution -「HDU」Professor Ben

    Description 有 \(Q\) 个询问.每次给定一个正整数 \(n\),求它的所有因数的质因数个数的和. Solution 就讲中间的一个 Trick. 我们定义正整数 \(x\) 有 \(f ...