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. Android Weekly Notes Issue #232

    Android Weekly Issue #232 November 20th, 2016 Android Weekly Issue #232 本期内容包括: Kotlin的优势讨论; MVVM模式结 ...

  2. 初识java之String与StringBuffer(上)

    好久没写博客了,一直在纠结后面的路怎么发展?好了不说废话了!!正题开始!! String与StringBuffer类是我们在开发中最常用的,我们现在一起来分析一下这两个类,首先我们先来谈谈String ...

  3. css选择器的使用详解

    -.css选择器的分类: 二.常用选择器详解: 1.标签选择器: 语法: 标签名 { 属性:属性值; } 代码示例: h1 { color: #ccc; font-size: 28px; } 2.类选 ...

  4. 使用gulp解决RequireJS项目前端缓存问题(一)

    1.前言 前端缓存一直是个令人头疼的问题,你有可能见过下面博客园首页的资源文件链接: 有没有发现文件名后面有一串不规则的东东,没错,这就是运用缓存机制,我们今天研究的就是这种东西. 先堵为快,猛戳链接 ...

  5. 我的敏捷、需求分析、UML、软件设计电子书 - 下载(持续更新中)

    我将所有我的电子书汇总在一起,方便大家下载!(持续更新) 文档保存在我的网站——软件知识原创基地上(www.umlonline.org),请放心下载. 1)软件设计是怎样炼成的?(2014-4-1 发 ...

  6. Netty:数据处理流程

    Netty作为异步的.事件驱动一个网络通信框架,使用它可以帮助我们快速开发高性能高可靠性的网络服务. 为了更好的使用Netty来解决开发中的问题,学习Netty是很有必要的. Netty现在主流有三个 ...

  7. Linux httpd源码编译安装

    # wget http://apache.fayea.com/httpd/httpd-2.2.31.tar.bz2 去官网下载源码包 # mv httpd-.tar.bz2 /usr/local/sr ...

  8. 一种面向对象的TCP/IP中间件

    这是一个使用C++封装的TCP/IP协议栈(仅传输层),属于本人所设计的中间件的一员,具有硬件无关,应用无关特性,使用非常方便,一看代码便知: #include "net.h" / ...

  9. j2ee之Filter使用实例(页面跳转)

    javax.servlet.Filter类中主要有三个方法. public void destroy(); //销毁对象 public void doFilter(ServletRequest req ...

  10. [bzoj3123][sdoi2013森林] (树上主席树+lca+并查集启发式合并+暴力重构森林)

    Description Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数 ...