JestClient
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相关推荐
- 使用JestClient操作ElasticSearch
可参考: https://www.blog-china.cn/template/documentHtml/1484101683485.html https://github.com/searchbo ...
- elasticsearch新增_SpringBoot 使用JestClient操作Elasticsearch
1.Jest介绍 操作Elasticsearch的客户端有很多,SpringBoot也提供了方式去操作,这里介绍另外一种方式去使用Elasticsearch --- JestClient JestCl ...
- jest java_使用JestClient操作ElasticSearch的简单demo
elasticsearch rest api 学习记录 elasticsearch版本:1.4.1 学习记录 学习的博客社区 集群健康查看 epoch timestamp cluster status ...
- Elasticsearch JestClient 使用
一.索引操作 //创建索引public static void main(String[] args) throws IOException {// 1. 创建 ES 连接池JestClientFac ...
- Java使用JestClient操作ElasticSearch
个人使用Java操作Elasticsearch的记录,综合网络上很多的片段,自己进行修改后的,亲测可以使用,故上传做个备份. Java操作代码: package cn.xgs.JestClient;i ...
- JestClient - Elasticsearch 基本操作汇总
目录 Elasticsearch 介绍 搭建 Elasticsearch 集群 Spring Boot 集成 Elasticsearch JestClient 介绍 JestClient 操作 ESQ ...
- es springboot 不设置id_原创 | 一篇解决Springboot 整合 Elasticsearch
ElasticSearch 结合业务的场景,在目前的商品体系需要构建搜索服务,主要是为了提供用户更丰富的检索场景以及高速,实时及性能稳定的搜索服务. ElasticSearch是一个基于Lucene的 ...
- 聊聊springboot elasticsearch healthIndicator
序 本文主要研究一下springboot elasticsearch healthIndicator ElasticsearchHealthIndicatorProperties spring-boo ...
- Spring Boot 参考指南(使用NoSQL技术)
30. 使用NoSQL技术 Spring Data提供了额外的项目,帮助你访问各种NoSQL技术,包括:MongoDB,Neo4J,Elasticsearch,Solr,Redis,Gemfire,C ...
最新文章
- 使用Python从PDF导出数据
- 文件系统与数据库的优缺点
- 【聚类算法】常见的六大聚类算法
- Linux系统下挂载Windows分区
- Android——数据存储(课堂代码整理:SharedPreferences存储和手机内部文件存储)...
- java 分页查询实例_JavaWeb学习之分页查询实例
- IIS启用.net2.0
- 自学JavaWeb系列-JSP教程!
- Swagger2自定义添加请求头key-value暴力猴插件
- matlab零序五次谐波,基于5次谐波的小电流接地系统故障选线方法仿真与分析.docx...
- 20110822炒股日记--进入筑底阶段
- Java大作业之餐厅管理系统
- 五、使用Python操作数据库
- 安卓via浏览器settings.xml修改浏览器标识UserAgent
- Fedora和Red Hat Enterprise Linux实用指南(第6版)(上、下册)( 入行必读的Linux圣经)...
- Python3 与 C# 基础语法对比(String专栏)
- 好看又炫酷的网页特效例子收集
- Minio Browser
- 【翻译】ILR-我的Gadgets去哪里了——ILR: Where’d My Gadgets Go?
- 介绍一款好用的离线浏览器——Portable Offline Browser
热门文章
- 还在因常常忘记关电脑而烦恼吗?小编教你一招,一封邮件轻轻松松搞定
- 什么是R型直流电源变压器 他是如何进行电压转换的?
- 什么是Attribute
- 观某可乐营销手段有感,微商这么做也能发财
- 数学建模-关于碎纸片的拼接复原的理解(2003年建模国赛B题 附Matlab源码)
- 使用FullCalendar库,制作活动日历插件
- 16种重要编程语言概览
- c语言实现简单环形链表,c语言实现简单链表 - 阿豪boy的个人空间 - OSCHINA - 中文开源技术交流社区...
- Excel如何不四舍五入,彻底删除小数。
- MATLAB的用途与使用方法,matlab shiftdim函数作用用法与shiftdim()移动维度