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. [自制操作系统] 第04回 完善MBR

    目录 一.前景回顾 二.改写MBR 三.实现loader 一.前景回顾 在之前我们说到,MBR的作用便是加载操作系统内核到指定位置.而MBR需要通过读取硬盘来获得操作系统内核.在上一回我们已经讲解了硬 ...

  2. 南京大学 静态软件分析(static program analyzes)-- introduction 学习笔记

    一.Programming Languages体系 静态程序分析是编程语言中应用层面下的一个细分领域,它是一个非常重要的核心内容. 在理论部分,考虑的是如何设计一个语言的语法和语义,如何设计语言的类型 ...

  3. BUUCTF-荷兰宽带数据泄露

    荷兰宽带数据泄露 下载后发现是个BIN文件,之前也是做过类似的题目 RouterPassview打开BIn文件即可,搜索username或者password. 最后flag是username

  4. CAP:多重注意力机制,有趣的细粒度分类方案 | AAAI 2021

    论文提出细粒度分类解决方案CAP,通过上下文感知的注意力机制来帮助模型发现细微的特征变化.除了像素级别的注意力机制,还有区域级别的注意力机制以及局部特征编码方法,与以往的视觉方案很不同,值得一看 来源 ...

  5. Java中将对象或者集合对象转换成json字符串

    1.对象和字符串相互转换 2.集合对象和字符串相互转换

  6. Android Studio 的初次使用

    记录我第一次使用Android Studio时遇到的问题以及一些简单的笔记. 我所使用的是Android Studio 2.2版本 遇到的问题 创建一个Hello World!项目无疑是相当简单的,我 ...

  7. Codeforces Round #780 (Div. 3)

    A. Vasya and Coins 题目链接 题目大意 Vasya 有 a 个 1-burle coin,有 b 个 2-burle coin,问他不能通过不找钱支付的价格的最小值. 思路 如果 a ...

  8. 腾讯云原生数据库TDSQL-C入选信通院《云原生产品目录》

    近日,中国信通院.云计算开源产业联盟正式对外发布<云原生产品目录>,腾讯云原生数据库TDSQL-C凭借其超强性能.极致效率的弹性伸缩和完善的产品化解决方案体系,成功入围目录. 全球数字经济 ...

  9. CentOS查看操作系统安装时间信息:

    CentOS查看系统安装时间信息: 方法1:[root@logserver ~]#  ll /boot/|egrep -i "(grub|lost\+found)" 方法2:[ro ...

  10. Josephus问题(Ⅱ)

    题目描述 n个人排成一圈,按顺时针方向依次编号1,2,3-n.从编号为1的人开始顺时针"一二"报数,报到2的人退出圈子.这样不断循环下去,圈子里的人将不断减少.最终一定会剩下一个人 ...