JestService.java[html] view plain copy 在CODE上查看代码片派生到我的代码片
public class JestService {  /**  * 获取JestClient对象  * @return  */  public JestClient getJestClient() {    JestClientFactory factory = new JestClientFactory();  factory.setHttpClientConfig(new HttpClientConfig  .Builder("http://localhost:9200")  .gson(new GsonBuilder().setDateFormat("yyyy-MM-dd'T'hh:mm:ss").create())  .connTimeout(1500)  .readTimeout(3000)  .multiThreaded(true)  .build());  return factory.getObject();  }  /**  * 创建索引  * @param jestClient  * @param indexName  * @return  * @throws Exception  */  public boolean createIndex(JestClient jestClient, String indexName) throws Exception {  JestResult jr = jestClient.execute(new CreateIndex.Builder(indexName).build());  return jr.isSucceeded();  }  /**  * Put映射  * @param jestClient  * @param indexName  * @param typeName  * @param source  * @return  * @throws Exception  */  public boolean createIndexMapping(JestClient jestClient, String indexName, String typeName, String source) throws Exception {  PutMapping putMapping = new PutMapping.Builder(indexName, typeName, source).build();  JestResult jr = jestClient.execute(putMapping);  return jr.isSucceeded();  }  /**  * Get映射  * @param jestClient  * @param indexName  * @param typeName  * @return  * @throws Exception  */  public String getIndexMapping(JestClient jestClient, String indexName, String typeName) throws Exception {  GetMapping getMapping = new GetMapping.Builder().addIndex(indexName).addType(typeName).build();  JestResult jr = jestClient.execute(getMapping);  return jr.getJsonString();  }  /**  * 索引文档  * @param jestClient  * @param indexName  * @param typeName  * @param objs  * @return  * @throws Exception  */  public boolean index(JestClient jestClient, String indexName, String typeName, List<Object> objs) throws Exception {  Bulk.Builder bulk = new Bulk.Builder().defaultIndex(indexName).defaultType(typeName);  for (Object obj : objs) {  Index index = new Index.Builder(obj).build();  bulk.addAction(index);  }  BulkResult br = jestClient.execute(bulk.build());  return br.isSucceeded();  }  /**  * 搜索文档  * @param jestClient  * @param indexName  * @param typeName  * @param query  * @return  * @throws Exception  */  public SearchResult search(JestClient jestClient, String indexName, String typeName, String query) throws Exception {  Search search = new Search.Builder(query)  .addIndex(indexName)  .addType(typeName)  .build();  return jestClient.execute(search);  }  /**  * Count文档  * @param jestClient  * @param indexName  * @param typeName  * @param query  * @return  * @throws Exception  */  public Double count(JestClient jestClient, String indexName, String typeName, String query) throws Exception {  Count count = new Count.Builder()  .addIndex(indexName)  .addType(typeName)  .query(query)  .build();  CountResult results = jestClient.execute(count);   return results.getCount();  }  /**  * Get文档  * @param jestClient  * @param indexName  * @param typeName  * @param id  * @return  * @throws Exception  */  public JestResult get(JestClient jestClient, String indexName, String typeName, String id) throws Exception {  Get get = new Get.Builder(indexName, id).type(typeName).build();  return jestClient.execute(get);  }  /**  * Delete索引  * @param jestClient  * @param indexName  * @return  * @throws Exception  */  public boolean delete(JestClient jestClient, String indexName) throws Exception {  JestResult jr = jestClient.execute(new DeleteIndex.Builder(indexName).build());  return jr.isSucceeded();  }  /**  * Delete文档  * @param jestClient  * @param indexName  * @param typeName  * @param id  * @return  * @throws Exception  */  public boolean delete(JestClient jestClient, String indexName, String typeName, String id) throws Exception {  DocumentResult dr = jestClient.execute(new Delete.Builder(id).index(indexName).type(typeName).build());  return dr.isSucceeded();  }  /**  * 关闭JestClient客户端  * @param jestClient  * @throws Exception  */  public void closeJestClient(JestClient jestClient) throws Exception {  if (jestClient != null) {  jestClient.shutdownClient();  }  }
}
(3)UserTest.java[html] view plain copy 在CODE上查看代码片派生到我的代码片
public class UserTest {  private JestService jestService;  private JestClient jestClient;  private String indexName = "hwd";  private String typeName = "user";  @Before  public void setUp() throws Exception {  jestService = new JestService();  jestClient = jestService.getJestClient();  }  @After  public void tearDown() throws Exception {  jestService.closeJestClient(jestClient);  }  @Test  public void createIndex() throws Exception {  boolean result = jestService.createIndex(jestClient, indexName);  System.out.println(result);  }  @Test  public void createIndexMapping() throws Exception {  String source = "{\"" + typeName + "\":{\"properties\":{"  + "\"id\":{\"type\":\"integer\"}"  + ",\"name\":{\"type\":\"string\",\"index\":\"not_analyzed\"}"  + ",\"birth\":{\"type\":\"date\",\"format\":\"strict_date_optional_time||epoch_millis\"}"  + "}}}";  System.out.println(source);  boolean result = jestService.createIndexMapping(jestClient, indexName, typeName, source);  System.out.println(result);  }  @Test  public void getIndexMapping() throws Exception {  String result = jestService.getIndexMapping(jestClient, indexName, typeName);  System.out.println(result);  }  @Test  public void index() throws Exception {  List<Object> objs = new ArrayList<Object>();  objs.add(new User(1, "T:o\"m-", new Date()));  objs.add(new User(2, "J,e{r}r;y:", new Date()));  boolean result = jestService.index(jestClient, indexName, typeName, objs);  System.out.println(result);  }  @Test  public void termQuery() throws Exception {  SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();  QueryBuilder queryBuilder = QueryBuilders  .termQuery("name", "T:o\"m-");//单值完全匹配查询  searchSourceBuilder.query(queryBuilder);  searchSourceBuilder.size(10);  searchSourceBuilder.from(0);  String query = searchSourceBuilder.toString();   System.out.println(query);  SearchResult result = jestService.search(jestClient, indexName, typeName, query);  List<Hit<User, Void>> hits = result.getHits(User.class);  System.out.println("Size:" + hits.size());  for (Hit<User, Void> hit : hits) {  User user = hit.source;  System.out.println(user.toString());  }  }  @Test  public void termsQuery() throws Exception {  SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();  QueryBuilder queryBuilder = QueryBuilders  .termsQuery("name", new String[]{ "T:o\"m-", "J,e{r}r;y:" });//多值完全匹配查询  searchSourceBuilder.query(queryBuilder);  searchSourceBuilder.size(10);  searchSourceBuilder.from(0);  String query = searchSourceBuilder.toString();   System.out.println(query);  SearchResult result = jestService.search(jestClient, indexName, typeName, query);  List<Hit<User, Void>> hits = result.getHits(User.class);  System.out.println("Size:" + hits.size());  for (Hit<User, Void> hit : hits) {  User user = hit.source;  System.out.println(user.toString());  }  }  @Test  public void wildcardQuery() throws Exception {  SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();  QueryBuilder queryBuilder = QueryBuilders  .wildcardQuery("name", "*:*");//通配符和正则表达式查询  searchSourceBuilder.query(queryBuilder);  searchSourceBuilder.size(10);  searchSourceBuilder.from(0);  String query = searchSourceBuilder.toString();      System.out.println(query);  SearchResult result = jestService.search(jestClient, indexName, typeName, query);  List<Hit<User, Void>> hits = result.getHits(User.class);  System.out.println("Size:" + hits.size());  for (Hit<User, Void> hit : hits) {  User user = hit.source;  System.out.println(user.toString());  }  }  @Test  public void prefixQuery() throws Exception {  SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();  QueryBuilder queryBuilder = QueryBuilders  .prefixQuery("name", "T:o");//前缀查询  searchSourceBuilder.query(queryBuilder);  searchSourceBuilder.size(10);  searchSourceBuilder.from(0);  String query = searchSourceBuilder.toString();      System.out.println(query);  SearchResult result = jestService.search(jestClient, indexName, typeName, query);  List<Hit<User, Void>> hits = result.getHits(User.class);  System.out.println("Size:" + hits.size());  for (Hit<User, Void> hit : hits) {  User user = hit.source;  System.out.println(user.toString());  }  }  @Test  public void rangeQuery() throws Exception {  SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();  QueryBuilder queryBuilder = QueryBuilders  .rangeQuery("birth")  .gte("2016-09-01T00:00:00")  .lte("2016-10-01T00:00:00")  .includeLower(true)  .includeUpper(true);//区间查询  searchSourceBuilder.query(queryBuilder);  searchSourceBuilder.size(10);  searchSourceBuilder.from(0);  String query = searchSourceBuilder.toString();  System.out.println(query);  SearchResult result = jestService.search(jestClient, indexName, typeName, query);  List<Hit<User, Void>> hits = result.getHits(User.class);  System.out.println("Size:" + hits.size());  for (Hit<User, Void> hit : hits) {  User user = hit.source;  System.out.println(user.toString());  }  }  @Test  public void queryString() throws Exception {  SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();  QueryBuilder queryBuilder = QueryBuilders  .queryString(QueryParser.escape("T:o\""));//文本检索,应该是将查询的词先分成词库中存在的词,然后分别去检索,存在任一存在的词即返回,查询词分词后是OR的关系。需要转义特殊字符  searchSourceBuilder.query(queryBuilder);  searchSourceBuilder.size(10);  searchSourceBuilder.from(0);  String query = searchSourceBuilder.toString();   System.out.println(query);  SearchResult result = jestService.search(jestClient, indexName, typeName, query);  List<Hit<User, Void>> hits = result.getHits(User.class);  System.out.println("Size:" + hits.size());  for (Hit<User, Void> hit : hits) {  User user = hit.source;  System.out.println(user.toString());  }  }  @Test  public void count() throws Exception {  String[] name = new String[]{ "T:o\"m-", "Jerry" };  String from = "2016-09-01T00:00:00";  String to = "2016-10-01T00:00:00";  SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();  QueryBuilder queryBuilder = QueryBuilders.boolQuery()  .must(QueryBuilders.termsQuery("name", name))  .must(QueryBuilders.rangeQuery("birth").gte(from).lte(to));  searchSourceBuilder.query(queryBuilder);  String query = searchSourceBuilder.toString();   System.out.println(query);  Double count = jestService.count(jestClient, indexName, typeName, query);  System.out.println("Count:" + count);  }  @Test  public void get() throws Exception {  String id = "2";  JestResult result = jestService.get(jestClient, indexName, typeName, id);  if (result.isSucceeded()) {  User user = result.getSourceAsObject(User.class);  System.out.println(user.toString());  }  }  @Test  public void deleteIndexDocument() throws Exception {  String id = "2";  boolean result = jestService.delete(jestClient, indexName, typeName, id);  System.out.println(result);  }  @Test  public void deleteIndex() throws Exception {  boolean result = jestService.delete(jestClient, indexName);  System.out.println(result);  }
}  

转载于:https://www.cnblogs.com/mayidudu/p/6238710.html

JestClient相关推荐

  1. 使用JestClient操作ElasticSearch

    可参考:  https://www.blog-china.cn/template/documentHtml/1484101683485.html https://github.com/searchbo ...

  2. elasticsearch新增_SpringBoot 使用JestClient操作Elasticsearch

    1.Jest介绍 操作Elasticsearch的客户端有很多,SpringBoot也提供了方式去操作,这里介绍另外一种方式去使用Elasticsearch --- JestClient JestCl ...

  3. jest java_使用JestClient操作ElasticSearch的简单demo

    elasticsearch rest api 学习记录 elasticsearch版本:1.4.1 学习记录 学习的博客社区 集群健康查看 epoch timestamp cluster status ...

  4. Elasticsearch JestClient 使用

    一.索引操作 //创建索引public static void main(String[] args) throws IOException {// 1. 创建 ES 连接池JestClientFac ...

  5. Java使用JestClient操作ElasticSearch

    个人使用Java操作Elasticsearch的记录,综合网络上很多的片段,自己进行修改后的,亲测可以使用,故上传做个备份. Java操作代码: package cn.xgs.JestClient;i ...

  6. JestClient - Elasticsearch 基本操作汇总

    目录 Elasticsearch 介绍 搭建 Elasticsearch 集群 Spring Boot 集成 Elasticsearch JestClient 介绍 JestClient 操作 ESQ ...

  7. es springboot 不设置id_原创 | 一篇解决Springboot 整合 Elasticsearch

    ElasticSearch 结合业务的场景,在目前的商品体系需要构建搜索服务,主要是为了提供用户更丰富的检索场景以及高速,实时及性能稳定的搜索服务. ElasticSearch是一个基于Lucene的 ...

  8. 聊聊springboot elasticsearch healthIndicator

    序 本文主要研究一下springboot elasticsearch healthIndicator ElasticsearchHealthIndicatorProperties spring-boo ...

  9. Spring Boot 参考指南(使用NoSQL技术)

    30. 使用NoSQL技术 Spring Data提供了额外的项目,帮助你访问各种NoSQL技术,包括:MongoDB,Neo4J,Elasticsearch,Solr,Redis,Gemfire,C ...

最新文章

  1. 使用Python从PDF导出数据
  2. 文件系统与数据库的优缺点
  3. 【聚类算法】常见的六大聚类算法
  4. Linux系统下挂载Windows分区
  5. Android——数据存储(课堂代码整理:SharedPreferences存储和手机内部文件存储)...
  6. java 分页查询实例_JavaWeb学习之分页查询实例
  7. IIS启用.net2.0
  8. 自学JavaWeb系列-JSP教程!
  9. Swagger2自定义添加请求头key-value暴力猴插件
  10. matlab零序五次谐波,基于5次谐波的小电流接地系统故障选线方法仿真与分析.docx...
  11. 20110822炒股日记--进入筑底阶段
  12. Java大作业之餐厅管理系统
  13. 五、使用Python操作数据库
  14. 安卓via浏览器settings.xml修改浏览器标识UserAgent
  15. Fedora和Red Hat Enterprise Linux实用指南(第6版)(上、下册)( 入行必读的Linux圣经)...
  16. Python3 与 C# 基础语法对比(String专栏)
  17. 好看又炫酷的网页特效例子收集
  18. Minio Browser
  19. 【翻译】ILR-我的Gadgets去哪里了——ILR: Where’d My Gadgets Go?
  20. 介绍一款好用的离线浏览器——Portable Offline Browser

热门文章

  1. 还在因常常忘记关电脑而烦恼吗?小编教你一招,一封邮件轻轻松松搞定
  2. 什么是R型直流电源变压器 他是如何进行电压转换的?
  3. 什么是Attribute
  4. 观某可乐营销手段有感,微商这么做也能发财
  5. 数学建模-关于碎纸片的拼接复原的理解(2003年建模国赛B题 附Matlab源码)
  6. 使用FullCalendar库,制作活动日历插件
  7. 16种重要编程语言概览
  8. c语言实现简单环形链表,c语言实现简单链表 - 阿豪boy的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. Excel如何不四舍五入,彻底删除小数。
  10. MATLAB的用途与使用方法,matlab shiftdim函数作用用法与shiftdim()移动维度