使用JestClient操作ElasticSearch
来源:互联网 发布:网络的危害英语作文 编辑:程序博客网 时间:2024/06/06 06:51
可参考:
https://www.blog-china.cn/template/documentHtml/1484101683485.html
https://github.com/searchbox-io/Jest/blob/master/jest/src/test/java/io/searchbox/core/SearchScrollIntegrationTest.java
使用JestClient操作ElasticSearch,具体代码如下:
InitElasticSearchConfig.java
package com.mdl.monitor.init;import com.google.gson.GsonBuilder;import io.searchbox.client.JestClient;import io.searchbox.client.JestClientFactory;import io.searchbox.client.config.HttpClientConfig;/** * 初始化es */public class InitElasticSearchConfig { private JestClient client ; public JestClient getClient() { return client; } public InitElasticSearchConfig(String esUrl){ client = getClientConfig(esUrl) ; } public JestClient getClientConfig(String esUrl){ JestClientFactory factory = new JestClientFactory(); factory.setHttpClientConfig(new HttpClientConfig .Builder(esUrl) .gson(new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create()) .multiThreaded(true) .readTimeout(10000) .build()); JestClient client = factory.getObject(); return client ; }}
ElasticSearchDao.java
package com.mdl.monitor.repositorys.elasticsearch;import java.util.List;import com.google.gson.JsonObject;import io.searchbox.client.JestResult;import io.searchbox.core.SearchResult.Hit;import io.searchbox.core.SuggestResult;/** * ES操作 抽象方法 基本包含所有基本操作 */public interface ElasticSearchDao { /** * 删除索引 * @param type :当前删除document名称 * @return */ public JestResult deleteIndex(String type) ; //清除缓存 public JestResult clearCache() ; /** * 关闭索引 * @param type :文档表示的对象类别 * @return */ public JestResult closeIndex(String type) ; //优化索引 public JestResult optimizeIndex() ; //刷新索引 public JestResult flushIndex(); //判断索引是否存在 public JestResult indicesExists(); //查看节点信息 public JestResult nodesInfo(); //查看集群健康信息 public JestResult health(); //节点状态 public JestResult nodesStats(); /** * 更新Document * @param index :文档在哪存放 * @param type : 文档表示的对象类别 * @param id :文档唯一标识 */ public JestResult updateDocument(String script , String index,String type,String id); /** * 删除Document * @param index :文档在哪存放 * @param type : 文档表示的对象类别 * @param id :文档唯一标识 * @return */ public JestResult deleteDocument(String index,String type,String id) ; /** * 获取Document * @param o :返回对象 * @param index :文档在哪存放 * @param type : 文档表示的对象类别 * @param id :文档唯一标识 * @return */ public <T> JestResult getDocument(T o , String index , String type , String id) ; //Suggestion public List<SuggestResult.Suggestion> suggest() ; /** * 查询全部 * @param index :文档在哪存放 * @return */ public <T> List<Hit<T,Void>> searchAll(String index , T o); /** * 搜索 * @param keyWord :搜索关键字 * @return */ public <T> List<Hit<T,Void>> createSearch(String keyWord , String type , T o , String... fields) ; //bulkIndex操作 public <T> void bulkIndex(String index , String type , T o) ; /** * 创建索引 * @param o :返回对象 * @param index :文档在哪存放 * @param type : 文档表示的对象类别 * @return */ public <T> JestResult createIndex(T o , String index , String type); /** * 搜索事件流图表数据 * @param param * @return */ public JsonObject searchEvent(String param); }
ElasticSearchDaoImpl.java
package com.mdl.monitor.repositorys.elasticsearch.impl;import java.io.IOException;import java.lang.reflect.Method;import java.util.Arrays;import java.util.List;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.elasticsearch.index.query.QueryBuilders;import org.elasticsearch.search.builder.SearchSourceBuilder;import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.mdl.monitor.init.InitElasticSearchConfig;import com.mdl.monitor.repositorys.elasticsearch.ElasticSearchDao;import com.google.gson.JsonObject;import com.google.gson.JsonParser;import io.searchbox.client.JestResult;import io.searchbox.cluster.Health;import io.searchbox.cluster.NodesInfo;import io.searchbox.cluster.NodesStats;import io.searchbox.core.Bulk;import io.searchbox.core.Delete;import io.searchbox.core.Get;import io.searchbox.core.Index;import io.searchbox.core.Search;import io.searchbox.core.SearchResult;import io.searchbox.core.SearchResult.Hit;import io.searchbox.core.Suggest;import io.searchbox.core.SuggestResult;import io.searchbox.core.SuggestResult.Suggestion;import io.searchbox.core.Update;import io.searchbox.indices.ClearCache;import io.searchbox.indices.CloseIndex;import io.searchbox.indices.DeleteIndex;import io.searchbox.indices.Flush;import io.searchbox.indices.IndicesExists;import io.searchbox.indices.Optimize;/** * es操作实现类 */@Servicepublic class ElasticSearchDaoImpl implements ElasticSearchDao{ static protected final Log log = LogFactory.getLog(ElasticSearchDaoImpl.class.getName()); @Autowired private InitElasticSearchConfig esConfig ; @Override public JestResult deleteIndex(String type) { DeleteIndex deleteIndex = new DeleteIndex.Builder(type).build(); JestResult result = null ; try { result = esConfig.getClient().execute(deleteIndex); log.info("deleteIndex == " + result.getJsonString()); } catch (IOException e) { e.printStackTrace(); } return result ; } @Override public JestResult clearCache() { ClearCache closeIndex = new ClearCache.Builder().build(); JestResult result = null ; try { result = esConfig.getClient().execute(closeIndex); log.info("clearCache == " + result.getJsonString()); } catch (IOException e) { e.printStackTrace(); } return result ; } @Override public JestResult closeIndex(String type) { CloseIndex closeIndex = new CloseIndex.Builder(type).build(); JestResult result = null ; try { result = esConfig.getClient().execute(closeIndex); log.info("closeIndex == " + result.getJsonString()); } catch (IOException e) { e.printStackTrace(); } return result ; } @Override public JestResult optimizeIndex() { Optimize optimize = new Optimize.Builder().build(); JestResult result = null ; try { result = esConfig.getClient().execute(optimize); log.info("optimizeIndex == " + result.getJsonString()); } catch (IOException e) { e.printStackTrace(); } return result ; } @Override public JestResult flushIndex() { Flush flush = new Flush.Builder().build(); JestResult result = null ; try { result = esConfig.getClient().execute(flush); log.info("flushIndex == " + result.getJsonString()); } catch (IOException e) { e.printStackTrace(); } return result ; } @Override public JestResult indicesExists() { IndicesExists indicesExists = new IndicesExists.Builder("article").build(); JestResult result = null ; try { result = esConfig.getClient().execute(indicesExists); log.info("indicesExists == " + result.getJsonString()); } catch (IOException e) { e.printStackTrace(); } return result ; } @Override public JestResult nodesInfo() { NodesInfo nodesInfo = new NodesInfo.Builder().build(); JestResult result = null ; try { result = esConfig.getClient().execute(nodesInfo); log.info("nodesInfo == " + result.getJsonString()); } catch (IOException e) { e.printStackTrace(); } return result ; } @Override public JestResult health() { Health health = new Health.Builder().build(); JestResult result = null ; try { result = esConfig.getClient().execute(health); log.info("health == " + result.getJsonString()); } catch (IOException e) { e.printStackTrace(); } return result ; } @Override public JestResult nodesStats() { NodesStats nodesStats = new NodesStats.Builder().build(); JestResult result = null ; try { result = esConfig.getClient().execute(nodesStats); log.info("nodesStats == " + result.getJsonString()); } catch (IOException e) { e.printStackTrace(); } return result ; } @Override public JestResult updateDocument(String script , String index, String type, String id) { /*String script = "{" + " \"doc\" : {" + " \"title\" : \""+article.getTitle()+"\"," + " \"content\" : \""+article.getContent()+"\"," + " \"author\" : \""+article.getAuthor()+"\"," + " \"source\" : \""+article.getSource()+"\"," + " \"url\" : \""+article.getUrl()+"\"," + " \"pubdate\" : \""+new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").format(article.getPubdate())+"\"" + " }" + "}";*/ Update update = new Update.Builder(script).index(index).type(type).id(id).build(); JestResult result = null ; try { result = esConfig.getClient().execute(update); log.info("updateDocument == " + result.getJsonString()); } catch (IOException e) { e.printStackTrace(); } return result ; } @Override public JestResult deleteDocument(String index, String type, String id) { Delete delete = new Delete.Builder(id).index(index).type(type).build(); JestResult result = null ; try { result = esConfig.getClient().execute(delete); log.info("deleteDocument == " + result.getJsonString()); } catch (IOException e) { e.printStackTrace(); } return result; } @Override public <T> JestResult getDocument(T object , String index, String type, String id) { Get get = new Get.Builder(index, id).type(type).build(); JestResult result = null ; try { result = esConfig.getClient().execute(get); T o = (T) result.getSourceAsObject(object.getClass()); for (Method method : o.getClass().getMethods()) { log.info("getDocument == " + method.getName()); } } catch (IOException e) { e.printStackTrace(); } return result; } @Override public List<Suggestion> suggest() { String suggestionName = "my-suggestion"; Suggest suggest = new Suggest.Builder("{" + " \"" + suggestionName + "\" : {" + " \"text\" : \"the amsterdma meetpu\"," + " \"term\" : {" + " \"field\" : \"body\"" + " }" + " }" + "}").build(); SuggestResult suggestResult = null ; List<SuggestResult.Suggestion> suggestionList = null ; try { suggestResult = esConfig.getClient().execute(suggest); log.info("suggestResult.isSucceeded() == " + suggestResult.isSucceeded()); suggestionList = suggestResult.getSuggestions(suggestionName); log.info("suggestionList.size() == " + suggestionList.size()); for(SuggestResult.Suggestion suggestion:suggestionList){ System.out.println(suggestion.text); } } catch (IOException e) { e.printStackTrace(); } return suggestionList ; } @Override public <T> List<Hit<T, Void>> searchAll(String index , T o) { SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(QueryBuilders.matchAllQuery()); Search search = new Search.Builder(searchSourceBuilder.toString()) .addIndex(index) .build(); SearchResult result = null ; List<?> hits = null ; try { result = esConfig.getClient().execute(search); System.out.println("本次查询共查到:"+result.getTotal()+"个关键字!"); log.info("本次查询共查到:"+result.getTotal()+"个关键字!"); hits = result.getHits(o.getClass()); } catch (IOException e) { e.printStackTrace(); } return (List<Hit<T, Void>>) hits ; } @Override public <T> List<Hit<T, Void>> createSearch(String keyWord , String type , T o , String... fields) { SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(QueryBuilders.queryStringQuery(keyWord)); HighlightBuilder highlightBuilder = new HighlightBuilder(); for(String field : fields){ highlightBuilder.field(field);//高亮field } highlightBuilder.preTags("<em>").postTags("</em>");//高亮标签 highlightBuilder.fragmentSize(200);//高亮内容长度 searchSourceBuilder.highlighter(highlightBuilder); Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex(type).build(); SearchResult result = null ; List<?> hits = null ; try { result = esConfig.getClient().execute(search); System.out.println("本次查询共查到:"+result.getTotal()+"个结果!"); hits = result.getHits(o.getClass()); } catch (IOException e) { e.printStackTrace(); } return (List<Hit<T, Void>>) hits ; } @Override public <T> void bulkIndex(String index, String type , T o) { Bulk bulk = new Bulk.Builder() .defaultIndex(index) .defaultType(type) .addAction(Arrays.asList( new Index.Builder(o).build() )).build(); try { esConfig.getClient().execute(bulk); } catch (IOException e) { e.printStackTrace(); } } @Override public <T> JestResult createIndex(T o, String index, String type) { Index index1 = new Index.Builder(o).index(index).type(type).build(); JestResult jestResult = null ; try { jestResult = esConfig.getClient().execute(index1); } catch (IOException e) { e.printStackTrace(); } return jestResult; } @Override public JsonObject searchEvent(String param) { JsonObject returnData = new JsonParser().parse(param).getAsJsonObject(); Search search = new Search.Builder(returnData.toString()).addType("event").addIndex("pi").build();// Gson gs = new Gson();// System.out.println("输入参数为:" + "\n" + gs.toJson(search)); SearchResult result = null ; try { result = esConfig.getClient().execute(search);// System.out.println("\n" + gs.toJson(result.getJsonObject()) + "\n" );// System.out.println("本次查询共查到:" + "\n" +result.getTotal()+"个结果!"); } catch (IOException e) { e.printStackTrace(); } return result.getJsonObject(); }}
project_servlet.xml
<!-- es连接配置 --> <bean id="esConfig" class="com.mdl.monitor.init.InitElasticSearchConfig" > <constructor-arg index="0" value="${elasticUrl}"/> </bean>
scroll分页
@Override public JsonObject searchEventHistogramByScroll(String scrollId) { SearchScroll scroll = new SearchScroll.Builder(scrollId, "1m").build(); JestResult result = null ; try { result = esConfig.getClient().execute(scroll); } catch (IOException e) { e.printStackTrace(); } return result.getJsonObject(); } @Override public JsonObject searchInitEventHistogram(String param) { JsonObject returnData = new JsonParser().parse(param).getAsJsonObject(); Search search = new Search.Builder(returnData.toString()) .addIndex("pi") .addType("event") .setParameter(Parameters.SCROLL, "1m") .build(); JestResult result = null; try { result = esConfig.getClient().execute(search); } catch (IOException e) { e.printStackTrace(); } return result.getJsonObject(); }
阅读全文
0 0
- 使用JestClient操作ElasticSearch
- 使用JestClient连接elasticsearch-5.x对数据进行分组聚合
- ElasticSearch jestClient增删改 索引基础方法
- springboot集成JestClient连接elasticsearch-5.x
- 使用Elasticsearch的java api,操作elasticsearch
- 使用curl命令操作elasticsearch
- 使用curl命令操作elasticsearch
- 使用curl命令操作elasticsearch
- 使用java客户端操作elasticsearch
- 使用Sense操作ElasticSearch CRUD
- 使用curl命令操作elasticsearch
- 使用curl命令操作elasticsearch
- 使用Sense操作ElasticSearch CRUD
- php使用Elasticsearch-api之delete_by_query操作
- php使用Elasticsearch-api之update_by_query操作
- 使用Sense浏览器插件操作ElasticSearch CRUD
- 使用Java Rest Client操作Elasticsearch
- [ElasticSearch]使用 java API 进行CRUD操作
- 比心
- Android 7.0下拍照和裁剪图片
- pyspider控制台使用说明
- 「Java学习」Spring框架简介
- 央视:乐视网是创业失败还是涉嫌欺诈?
- 使用JestClient操作ElasticSearch
- Linux-NFS——配置过程
- 《剑指offer》连续子数组的最大和
- flex 基础
- cscope使用简介
- Ubuntu下Android Studio的设备连接后设备名后为[null]的解决方法
- 局部极大值
- 双日历插件My97DatePicker
- Git学习笔记