暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Java API 整合 ES Doc

TechStyle 2021-08-31
278

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'





泰克风格 只讲干货 不弄玄虚

文章转载自TechStyle,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论