1. 程式人生 > >Elasticearch JAVA API 高級客戶端 增刪查改操作

Elasticearch JAVA API 高級客戶端 增刪查改操作

socket ESS lean rst arc 時間設置 def ray try

Elasticearch高級客戶端MAVEN 依賴:版本請自行對應自己的ELasticearch數據庫的版本

<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.4.1</version>
</dependency>


/**

* 連接Elasticearch數據庫
* @return
* @throws UnknownHostException
*/
public static RestHighLevelClient Server(){
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("192.168.2.154", 9200, "http"))
.setMaxRetryTimeoutMillis(5*60*1000)
.setHttpClientConfigCallback(new HttpClientConfigCallback(){
public HttpAsyncClientBuilder customizeHttpClient(
HttpAsyncClientBuilder httpClientBuilder) {
RequestConfig.Builder requestConfigBuilder = RequestConfig.custom()
.setConnectTimeout(5*60*1000)//超時時間為5分鐘
.setSocketTimeout(5*60*1000)//這就是Socket超時時間設置
.setConnectionRequestTimeout(5*60*1000);
httpClientBuilder.setDefaultRequestConfig(requestConfigBuilder.build());
return httpClientBuilder;
} }));
return client;
}



1、添加索引和數據

/**
* 單條插入數據
* @param client 連接的客戶端
* @param id 插入的ID
* @param label_key
* @param label_value
* @throws IOException
*/
public static void index(RestHighLevelClient client,String id,String label_key,String label_value){
IndexRequest indexRequest = new IndexRequest("posts", "doc", id)
.source(label_key, label_value);

try {
client.index(indexRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

2、根據ID精確匹配Elasticearch數據庫內的值

/**
* 返回詳細數據
* @param client
*/
public static void get(RestHighLevelClient client,String id){
GetRequest getRequest = new GetRequest(
TYPE,
DOC,
id);
try {
GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);

System.out.println(getResponse.getSource());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


/**
* 只返回true 或者 false
* @param client
* @return
*/
public static boolean exists(RestHighLevelClient client,String id){
boolean exists = false;
GetRequest getRequest = new GetRequest(
TYPE,
DOC,
id);
try {
exists = client.exists(getRequest,RequestOptions.DEFAULT);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return exists;
}

3、根據ID刪除某條數據

/**
* 刪除某條數據
* @param client
*/
public static void Delete(RestHighLevelClient client){
DeleteRequest request = new DeleteRequest(
"label",
"_doc",
"123456");
try {
DeleteResponse deleteResponse = client.delete(request, RequestOptions.DEFAULT);

System.out.println(deleteResponse.status());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

4、根據ID修改Elasticearch數據庫中對應ID的數值

public static void update(RestHighLevelClient client) throws IOException{
UpdateRequest request = new UpdateRequest("posts", "doc", "45645646556");
String jsonString = "{" +
"\"postDate\":\"2017-01-01\"," +
"\"message\":\"daily update\"" +
"}";
request.doc(jsonString, XContentType.JSON);
UpdateResponse updateResponse = client.update(request, RequestOptions.DEFAULT);
System.out.println(updateResponse.status());
}

5、批量處理

/**
* 批量添加
* @param client
*/
public static void All_index(RestHighLevelClient client,Map<String, String> map,String type){
BulkRequest request = new BulkRequest();

for(String key : map.keySet()){
String value = map.get(key);
String values[] = value.split(",");
if(values.length>=2){
request.add(new IndexRequest(type, DOC ,key)
.source(XContentType.JSON,values[0],values[1]));
}else{
for(int i = 0;i<values.length;i++){
System.out.println(values[i]+"valus值錯誤..."+values.length);
}
// request.add(new IndexRequest("posts", "_doc", key)
// .source(XContentType.JSON,values[0],""));
}
}
try {
BulkResponse bulkResponse = client.bulk(request, RequestOptions.DEFAULT);
System.err.println("批量提交的狀態:"+bulkResponse.status());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
try {
client.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.exit(0);
}
}

/**
* 批量更新
* @param client
*/
public static void All_update(RestHighLevelClient client,Map<String, String> map,String type){
BulkRequest request = new BulkRequest();

for(String key : map.keySet()){
String value = map.get(key);
String values[] = value.split(",");
if(values.length>=2){
request.add(new UpdateRequest(type, DOC, key)
.doc(XContentType.JSON,values[0],values[1]));
}else{
for(int i = 0;i<values.length;i++){
System.out.println(values[i]+"valus值錯誤..."+values.length);
}
// request.add(new UpdateRequest("posts", "_doc", key)
// .doc(XContentType.JSON,values[0],""));
}
}

try {
BulkResponse bulkResponse = client.bulk(request, RequestOptions.DEFAULT);
System.err.println("批量提交的狀態:"+bulkResponse.status());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
try {
client.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.exit(0);
}
}

/**
* 批量查詢
* @param client
*/
public static List<Map<String, String>> All_select(RestHighLevelClient client,Map<String, String> map,String type){
List<Map<String, String>> olist = new ArrayList<Map<String,String>>();

Map<String, String> map_true = new HashMap<String, String>();
Map<String, String> map_false = new HashMap<String, String>();
MultiGetRequest request = new MultiGetRequest();

for(String key : map.keySet()){
String value = map.get(key);
String values[] = value.split(",");
if(values.length==2){
request.add(new MultiGetRequest.Item(type, DOC, key));
}else{
for(int i = 0;i<values.length;i++){
System.out.println(values[i]+"valus值錯誤..."+values.length);
}
}
}

try {

MultiGetResponse response = client.mget(request, RequestOptions.DEFAULT);

for(int i = 0 ;i <response.getResponses().length;i++){
// System.out.println(response.getResponses()[i].getResponse().isExists());
String key = "";
String value = "";
MultiGetItemResponse firstItem = response.getResponses()[i];
if(firstItem.getResponse().isExists()){
key = firstItem.getId();
value = map.get(key);
map_true.put(key, value);
}else{
key = firstItem.getId();
value = map.get(key);
map_false.put(key, value);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
try {
client.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.exit(0);
}
olist.add(map_true);
olist.add(map_false);

return olist;
}

Elasticearch JAVA API 高級客戶端 增刪查改操作