Java API 整合 ES Doc
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/15210279.html
Maven Dependency
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.fool</groupId> <artifactId>helloes</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.13.4</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.13.4</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.14.1</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.14.1</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.12.5</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.20</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies> </project>
Prequisite
User.java
package org.fool.es.test; import lombok.Data; @Data public class User { private String name; private String sex; private Integer age; }
JsonUtils.java
package org.fool.es.test; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.ObjectMapper; import java.util.List; import java.util.Map; public class JsonUtils { private static final ObjectMapper MAPPER = new ObjectMapper(); public static String objectToJson(Object data) { try { String result = MAPPER.writeValueAsString(data); return result; } catch (JsonProcessingException e) { e.printStackTrace(); } return null; } public static <T> T jsonToBean(String jsonData, Class<T> beanType) { try { T result = MAPPER.readValue(jsonData, beanType); return result; } catch (Exception e) { e.printStackTrace(); } return null; } public static <T> List<T> jsonToList(String jsonData, Class<T> beanType) { JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType); try { List<T> resultList = MAPPER.readValue(jsonData, javaType); return resultList; } catch (Exception e) { e.printStackTrace(); } return null; } public static <K, V> Map<K, V> jsonToMap(String jsonData, Class<K> keyType, Class<V> valueType) { JavaType javaType = MAPPER.getTypeFactory().constructMapType(Map.class, keyType, valueType); try { Map<K, V> resultMap = MAPPER.readValue(jsonData, javaType); return resultMap; } catch (Exception e) { e.printStackTrace(); } return null; } }
Doc Insert
ESDocInsert.java
package org.fool.es.test; import org.apache.http.HttpHost; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.common.xcontent.XContentType; import java.io.IOException; public class ESDocInsert { public static void main(String[] args) throws IOException { RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("127.0.0.1", 9200, "http")) ); User user = new User(); user.setName("caocao2"); user.setSex("female"); user.setAge(30); IndexRequest indexRequest = new IndexRequest(); indexRequest.index("user").id("1008"); indexRequest.source(JsonUtils.objectToJson(user), XContentType.JSON); IndexResponse indexResponse = client.index(indexRequest, RequestOptions.DEFAULT); System.out.println(indexResponse.getResult()); client.close(); } }
Console Output
curl
curl --location --request GET 'http://127.0.0.1:9200/user/_doc/1008'
Doc Get
ESDocGet.java
package org.fool.es.test; import org.apache.http.HttpHost; import org.elasticsearch.action.get.GetRequest; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import java.io.IOException; public class ESDocGet { public static void main(String[] args) throws IOException { RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("127.0.0.1", 9200, "http")) ); GetRequest getRequest = new GetRequest(); getRequest.index("user").id("1008"); GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT); System.out.println(getResponse.getSourceAsString()); client.close(); } }
Console Output
Doc Update
ESDocUpdate.java
package org.fool.es.test; import org.apache.http.HttpHost; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.action.update.UpdateResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.common.xcontent.XContentType; import java.io.IOException; public class ESDocUpdate { public static void main(String[] args) throws IOException { RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("127.0.0.1", 9200, "http")) ); UpdateRequest updateRequest = new UpdateRequest(); updateRequest.index("user").id("1008"); updateRequest.doc(XContentType.JSON, "sex", "male", "age", 40); UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT); System.out.println(updateResponse.getResult()); client.close(); } }
Console Output
curl
curl --location --request GET 'http://127.0.0.1:9200/user/_doc/1008'
Doc Delete
ESDocDelete.java
package org.fool.es.test; import org.apache.http.HttpHost; import org.elasticsearch.action.delete.DeleteRequest; import org.elasticsearch.action.delete.DeleteResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import java.io.IOException; public class ESDocDelete { public static void main(String[] args) throws IOException { RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("127.0.0.1", 9200, "http")) ); DeleteRequest deleteRequest = new DeleteRequest(); deleteRequest.index("user").id("1008"); DeleteResponse deleteResponse = client.delete(deleteRequest, RequestOptions.DEFAULT); System.out.println(deleteResponse); client.close(); } }
Console Output
curl
curl --location --request GET 'http://127.0.0.1:9200/user/_doc/1008'
Batch Insert
ESDocBatchInsert.java
package org.fool.es.test; import org.apache.http.HttpHost; import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.bulk.BulkResponse; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.common.xcontent.XContentType; import java.io.IOException; import java.util.Arrays; public class ESDocBatchInsert { public static void main(String[] args) throws IOException { RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("127.0.0.1", 9200, "http")) ); BulkRequest bulkRequest = new BulkRequest(); bulkRequest.add(new IndexRequest().index("user").id("1001").source(XContentType.JSON, "name", "caocao", "age", 10, "sex", "male")); bulkRequest.add(new IndexRequest().index("user").id("1002").source(XContentType.JSON, "name", "liubei", "age", 20, "sex", "male")); bulkRequest.add(new IndexRequest().index("user").id("1003").source(XContentType.JSON, "name", "sunquan", "age", 30, "sex", "male")); bulkRequest.add(new IndexRequest().index("user").id("1004").source(XContentType.JSON, "name", "guanyu", "age", 40, "sex", "male")); bulkRequest.add(new IndexRequest().index("user").id("1005").source(XContentType.JSON, "name", "zhangfei", "age", 40, "sex", "male")); bulkRequest.add(new IndexRequest().index("user").id("1006").source(XContentType.JSON, "name", "zhaoyun", "age", 50, "sex", "male")); bulkRequest.add(new IndexRequest().index("user").id("1007").source(XContentType.JSON, "name", "caocao2", "age", 50, "sex", "female")); BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT); System.out.println(bulkResponse.getTook()); System.out.println(Arrays.toString(bulkResponse.getItems())); client.close(); } }
Console Output
curl
curl --location --request GET 'http://127.0.0.1:9200/user/_search'
Batch Delete
ESDocBatchDelete.java
package org.fool.es.test; import org.apache.http.HttpHost; import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.bulk.BulkResponse; import org.elasticsearch.action.delete.DeleteRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import java.io.IOException; import java.util.Arrays; public class ESDocBatchDelete { public static void main(String[] args) throws IOException { RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("127.0.0.1", 9200, "http")) ); BulkRequest bulkRequest = new BulkRequest(); bulkRequest.add(new DeleteRequest().index("user").id("1001")); bulkRequest.add(new DeleteRequest().index("user").id("1002")); bulkRequest.add(new DeleteRequest().index("user").id("1003")); bulkRequest.add(new DeleteRequest().index("user").id("1004")); bulkRequest.add(new DeleteRequest().index("user").id("1005")); bulkRequest.add(new DeleteRequest().index("user").id("1006")); bulkRequest.add(new DeleteRequest().index("user").id("1007")); BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT); System.out.println(bulkResponse.getTook()); System.out.println(Arrays.toString(bulkResponse.getItems())); client.close(); } }
Console Output
curl
curl --location --request GET 'http://127.0.0.1:9200/user/_search'
欢迎点赞关注和收藏
强者自救 圣者渡人