首先我不贊成再采用一些中間件(jar包)來解決和 Elasticsearch? 之間的交互,比如 Spring-data-elasticsearch.jar 系列一樣,用就得依賴它。而 Elasticsearch? 本身的用法就是很簡潔的,也很容易,只要稍微加一下封裝,即可解決。下面上我的簡單封裝的批量處理。
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的方式。今天就先介紹一個根據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; }
}
總結
以上是生活随笔為你收集整理的elasticsearch Insert 插入数据和delete 删除数据(Java)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。