生活随笔
收集整理的這篇文章主要介紹了
elasticsearch Insert 插入数据和delete 删除数据(Java)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
首先我不贊成再采用一些中間件(jar包)來(lái)解決和 Elasticsearch? 之間的交互,比如 Spring-data-elasticsearch.jar 系列一樣,用就得依賴它。而 Elasticsearch? 本身的用法就是很簡(jiǎn)潔的,也很容易,只要稍微加一下封裝,即可解決。下面上我的簡(jiǎn)單封裝的批量處理。
package com.sojson.core.elasticsearch.manager;
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;
import net.sf.json.JSONObject;
import org.elasticsearch.action.bulk.BulkRequestBuilder;import org.elasticsearch.action.bulk.BulkResponse;import org.elasticsearch.action.index.IndexRequestBuilder;
import com.sojson.common.utils.StringUtils;import com.sojson.core.elasticsearch.utils.ESTools;
public class InsertManager {
public static Map save(String index, String type, String idName,JSONObject json) { List list = new ArrayList(); list.add(json); return save(index, type, idName, list); } @SuppressWarnings("unchecked") public static Map save(String index, String type, String idName,List listData) { BulkRequestBuilder bulkRequest = ESTools.client.prepareBulk().setRefresh(true); Map resultMap = new HashMap(); for (Object object : listData) { JSONObject json = JSONObject.fromObject(object); if(StringUtils.isBlank(idName)){ IndexRequestBuilder lrb = ESTools.client
??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? .prepareIndex(index, type)
??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? .setSource(json); bulkRequest.add(lrb); } else{ String idValue = json.optString(idName); IndexRequestBuilder lrb = ESTools.client
??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? .prepareIndex(index, type,idValue)
??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? .setSource(json); bulkRequest.add(lrb); } }
BulkResponse bulkResponse = bulkRequest.execute().actionGet(); if (bulkResponse.hasFailures()) { System.out.println(bulkResponse.getItems().toString()); resultMap.put("500", "保存ES失敗!"); return resultMap; } bulkRequest = ESTools.client.prepareBulk(); resultMap.put("200", "保存ES成功!"); return resultMap; }} Elasticsearch的刪除也是很靈活的,下次我再介紹,
DeleteByQuery的方式。今天就先介紹一個(gè)根據(jù)ID刪除。上代碼。
package com.sojson.core.elasticsearch.manager;
import org.elasticsearch.action.delete.DeleteResponse;
import com.sojson.common.model.SOBanggKey;import com.sojson.core.elasticsearch.utils.ESTools;
public class DeleteManager { public static int deleteSOBanggByKey(SOBanggKey key) { String prefix = "%sx_x%s"; String id = String.format(prefix, key.getId(),key.getGid()); DeleteResponse result = ESTools.client.prepareDelete().setRefresh(true).setIndex(MappingManager.INDEX) .setType(MappingManager.B_TYPE) .setId(id) .setRefresh(true) .execute().actionGet(); boolean isfound = result.isFound(); return isfound?1:0; }
}
總結(jié)
以上是生活随笔為你收集整理的elasticsearch Insert 插入数据和delete 删除数据(Java)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。