• 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);  
        }  
    }  
    
  • 相关阅读:
    开启Chrome内核浏览器的多线程下载功能
    golang fasthttp
    国内外短信接码平台合集
    jsrsasign 进行 RSA 加密、解密、签名、验签
    sysbench对自装MySQL数据库进行基准测试
    MySQL慢查询
    Logstash的配置
    简单的MySQL主从状态监控
    aria2c备忘
    DataX 整合后重新编译打包
  • 原文地址:https://www.cnblogs.com/mayidudu/p/6238710.html
Copyright © 2020-2023  润新知