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);
}
}

JestClient的更多相关文章

  1. JestClient 使用教程,教你完成大部分ElasticSearch的操作。

    本篇文章代码实现不多,主要是教你如何用JestClient去实现ElasticSearch上的操作. 授人以鱼不如授人以渔. 一.说明 1.elasticsearch版本:6.2.4 . jdk版本: ...

  2. elasticsearch jestclient api

    1.es search sroll 可以遍历索引下所有数据 public class TestDemo { @Test public void searchSroll() { JestClientFa ...

  3. 3.2_springBoot2.1.x检索之JestClient操作ElasticSearch

    这里介绍Jest方式交互, 导入jest版本 <!--导入jest--> <dependency> <groupId>io.searchbox</groupI ...

  4. elasticsearch scroll api--jestclient invoke

    @Test public void testScroll(){ JestClientFactory factory = new JestClientFactory(); factory.setHttp ...

  5. jest for elasticsearch

    *elasticsearch(后面简称es) 背景: 目前项目应用中对es的操作用的是http(自己封装)的一套方法:有些数据处理起来还是需要定制开发处理,不是很方便.正好需要对本项目重新进行改造,于 ...

  6. SpringBoot整合ElasticSearch实现多版本的兼容

    前言 在上一篇学习SpringBoot中,整合了Mybatis.Druid和PageHelper并实现了多数据源的操作.本篇主要是介绍和使用目前最火的搜索引擎ElastiSearch,并和Spring ...

  7. springboot 注册dao层 service 层

    可以使用三种注解来引入DAO层的接口到spring容器中.1.@Mapper,写在每一个DAO层接口上,如下: 2.@MapperScan和@ComponentScan两者之一.前者的意义是将指定包中 ...

  8. Spring Boot 整合 elasticsearch

    一.简介 我们的应用经常需要添加检索功能,开源的 ElasticSearch 是目前全文搜索引擎的 首选.他可以快速的存储.搜索和分析海量数据.Spring Boot通过整合Spring Data E ...

  9. 史上最全面的Elasticsearch使用指南

    Elasticsearch使用指南 Elasticsearch使用指南 前言 ES是什么 什么是全文检索 ES的应用场景 ES的存储结构 第一章:安装 1.下载 2.解压 3.配置 4.启动 5.查看 ...

随机推荐

  1. iOS - ViewController的生命周期

    iOS SDK中提供很多原生的ViewController,大大提高了我们的开发效率:那么下面我们就根据开发中我们常用的ViewController谈一谈它的生命周期: (一)按照结构和用法可以对iO ...

  2. iOS网络2——NSURLSession使用详解

    原文在此 一.整体介绍 NSURLSession在2013年随着iOS7的发布一起面世,苹果对它的定位是作为NSURLConnection的替代者,然后逐步将NSURLConnection退出历史舞台 ...

  3. Android WebView 302斗争之旅

    一.背景 越来越多的业务接入,项目内多多少少会出现几个H5页面,只是单纯的提供WebView容器接入H5页面根本满足不了需求,他们需要登录态,需要制定协议控制Native的导航栏,或者需要JsBrid ...

  4. Augularjs-起步

    今年项目的需要,开始琢磨研究前端开发,由于之前项目已经用Angularjs了,就顺其而然的继续沿用. 在使用Angularjs之前,先要准备好工具:Nodejs.npm.git.bower.fis 下 ...

  5. Highchart基础教程-图表配置

    一.图表容器: Highcharts 实例化中绑定容器的两种方式: 1.通过 dom 调用 highcharts() 函数的方式 $("#container").highchart ...

  6. 5、项目间的沟通协调 - PMO项目管理办公室

    沟通是人类所具备的优良而有一定技巧的一种方式.但是,沟通也是PMO项目管理办公室中所有项目组必须建立起来的能力,也是PMO项目管理办公室日常所需要进行的一项工作内容. 一.项目间的沟通: PMO项目管 ...

  7. mdadm设定RAID磁盘阵列,且当分区故障后如何重建

    首先,fdisk建立不同分区,且设为fd格式 其次, mdadm -C md0 -a yes -l -n /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sd ...

  8. WPF 自定义窗口关闭按钮

    关闭图标设计主要涉及主要知识点: 1.Path,通过Path来画线.当然一般水平.竖直也是可以用Rectangle/Border之类的替代 一些简单的线条图标用Path来做,还是很方便的. 2.简单的 ...

  9. js中判断对象具体类型

    大家可能知道js中判断对象类型可以用typeof来判断.看下面的情况 <script> alert(typeof 1);//number alert(typeof "2" ...

  10. 【只需3步】Linux php的安装与配置[源码安装]

    作者小波/QQ463431476欢迎转载! Linux:redhat 6/centos 6 继续上一篇笔记Apache的配置http://www.cnblogs.com/xiaobo-Linux/p/ ...