From 28cf328a098334b51a3e9d2d56f983fb8c862211 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期六, 23 五月 2020 09:54:38 +0800 Subject: [PATCH] 足迹、收藏订单兼容新需求 --- fanli/src/main/java/com/yeshi/fanli/dao/ElasticBaseDao.java | 74 ++++++++++++++++++++++-------------- 1 files changed, 45 insertions(+), 29 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/dao/ElasticBaseDao.java b/fanli/src/main/java/com/yeshi/fanli/dao/ElasticBaseDao.java index 5c149e7..d5e227c 100644 --- a/fanli/src/main/java/com/yeshi/fanli/dao/ElasticBaseDao.java +++ b/fanli/src/main/java/com/yeshi/fanli/dao/ElasticBaseDao.java @@ -5,7 +5,8 @@ import java.util.List; import java.util.concurrent.TimeUnit; -import org.apache.http.HttpHost; +import javax.annotation.Resource; + import org.elasticsearch.action.delete.DeleteRequest; import org.elasticsearch.action.get.GetRequest; import org.elasticsearch.action.get.GetResponse; @@ -14,8 +15,6 @@ import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.client.RequestOptions; -import org.elasticsearch.client.RestClient; -import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.query.QueryBuilders; @@ -24,22 +23,36 @@ import org.elasticsearch.search.builder.SearchSourceBuilder; import org.springframework.stereotype.Repository; import org.yeshi.utils.JsonUtil; +import org.yeshi.utils.elasticsearch.Document; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.yeshi.fanli.service.manger.ElasticManger; + + @Repository public abstract class ElasticBaseDao<T> { - // 鍦板潃 - private static String host = "192.168.1.200"; - // 绔彛 - private static Integer port = 9200; - // 鏁版嵁搴撳悕绉� - public static String index = "order"; - // 鍒濆鍖朼pi瀹㈡埛绔� - public static RestHighLevelClient client = new RestHighLevelClient( - RestClient.builder(new HttpHost(host, port, "http"))); + @Resource + protected ElasticManger elasticManger; + + + /** + * 鑾峰彇index + * @param bean + * @return + */ + public String getDocument(Class<?> entityClass) { + if (entityClass.isAnnotationPresent(Document.class)) { + Document doc = (Document)entityClass.getAnnotation(Document.class); + return doc.indexName(); + } + String name = entityClass.getName(); + return name.substring(name.lastIndexOf(".") + 1, name.length()); + } + + /** * 鎻掑叆鏁版嵁 @@ -48,12 +61,13 @@ * @return */ public void save(T bean) { + String document = getDocument(bean.getClass()); String json = JsonUtil.getSimpleGson().toJson(bean); - IndexRequest request = new IndexRequest(index); + IndexRequest request = new IndexRequest(document); request.source(json, XContentType.JSON); // 鍚屾鎵ц try { - client.index(request, RequestOptions.DEFAULT); + elasticManger.getClient().index(request, RequestOptions.DEFAULT); } catch (IOException e) { e.printStackTrace(); } @@ -66,12 +80,14 @@ * @return */ public void save(T bean, String id) { + String document = getDocument(bean.getClass()); + String json = JsonUtil.getSimpleGson().toJson(bean); - IndexRequest request = new IndexRequest(index).id(id); + IndexRequest request = new IndexRequest(document).id(id); request.source(json, XContentType.JSON); // 鍚屾鎵ц try { - client.index(request, RequestOptions.DEFAULT); + elasticManger.getClient().index(request, RequestOptions.DEFAULT); } catch (IOException e) { e.printStackTrace(); } @@ -83,11 +99,13 @@ * @param bean */ public void update(String id, T bean) { - UpdateRequest request = new UpdateRequest(index, id); + String document = getDocument(bean.getClass()); + + UpdateRequest request = new UpdateRequest(document, id); String json = new GsonBuilder().create().toJson(bean); request.doc(json, XContentType.JSON); try { - client.update(request, RequestOptions.DEFAULT); + elasticManger.getClient().update(request, RequestOptions.DEFAULT); } catch (Exception e) { e.printStackTrace(); } @@ -99,10 +117,11 @@ * * @param Document id */ - public void delete(String id) { - DeleteRequest request = new DeleteRequest(index, id); + public void delete(String id, Class<T> entityClass) { + String document = getDocument(entityClass); + DeleteRequest request = new DeleteRequest(document, id); try { - client.delete(request, RequestOptions.DEFAULT); + elasticManger.getClient().delete(request, RequestOptions.DEFAULT); } catch (IOException e) { e.printStackTrace(); } @@ -115,9 +134,10 @@ * @return */ public T get(String id, Class<T> entityClass) { - GetRequest request = new GetRequest(index, id); + String document = getDocument(entityClass); + GetRequest request = new GetRequest(document, id); try { - GetResponse getResponse = client.get(request, RequestOptions.DEFAULT); + GetResponse getResponse = elasticManger.getClient().get(request, RequestOptions.DEFAULT); if (getResponse.isExists()) { String content = getResponse.getSourceAsString(); return new Gson().fromJson(content, entityClass); @@ -138,6 +158,7 @@ * @return */ public List<T> query(String document, String key, int start, int count, Class<T> entityClass) { + String index = getDocument(entityClass); List<T> list = new ArrayList<>(); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(QueryBuilders.termQuery(document, key)); @@ -149,7 +170,7 @@ searchRequest.indices(index); searchRequest.source(sourceBuilder); try { - SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); + SearchResponse searchResponse = elasticManger.getClient().search(searchRequest, RequestOptions.DEFAULT); SearchHits hits = searchResponse.getHits(); SearchHit[] searchHits = hits.getHits(); @@ -163,10 +184,5 @@ } return list; } - - - - - } -- Gitblit v1.8.0