Elasticsearch Java REST高级客户端 bool查询 àì夳堔傛蜴生んèń 2021-11-27 06:44 381阅读 0赞 # Elasticsearch Java REST高级客户端 bool查询 # 版本:Elasticsearch 7.2.0 maven配置见:[Elasticsearch Java REST高级客户端-DocumentApi][Elasticsearch Java REST_-DocumentApi] 1.search bool 查询 2.SearchScroll bool 查询 3.创建客户端 对人工智能感兴趣的同学,可以点击以下链接: [现在人工智能非常火爆,很多朋友都想学,但是一般的教程都是为博硕生准备的,太难看懂了。最近发现了一个非常适合小白入门的教程,不仅通俗易懂而且还很风趣幽默。所以忍不住分享一下给大家。点这里可以跳转到教程。][Link 1] [https://www.cbedai.net/u014646662][Link 1] ## 1.search bool 查询 ## /** * boolmatch查询 */ public static void boolQuery() { RestHighLevelClient client = getClient(); // 这里可以不指定索引,也可以指定多个 SearchRequest searchRequest = new SearchRequest("tomcat*"); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchRequest.source(searchSourceBuilder); QueryBuilder queryBuilder = QueryBuilders.boolQuery() .must(QueryBuilders.matchQuery("geoip.country_name", "China")) .must(QueryBuilders.matchQuery("geoip.region_name", "Zhejiang")) .must(QueryBuilders.matchQuery("verb", "POST")) .mustNot(QueryBuilders.termQuery("message", "sessionID")) .should(QueryBuilders.rangeQuery("timestamp").gte("2019-07-23").lte("2019-08-23")) .filter(QueryBuilders.rangeQuery("bytes").gte(1000).lte(10000)); searchSourceBuilder.query(queryBuilder); searchSourceBuilder.from(0); searchSourceBuilder.size(32); // 按评分排序 searchSourceBuilder.sort("_score"); SearchResponse search = null; try { search = client.search(searchRequest, RequestOptions.DEFAULT); search.getHits().forEach(System.out::println); } catch (IOException e) { e.printStackTrace(); } finally { close(client); } } ## 2.SearchScroll bool 查询 ## /** * bool查询 */ public static void searchScrollBool() { RestHighLevelClient client = getClient(); final Scroll scroll = new Scroll(TimeValue.timeValueMinutes(1L)); SearchRequest searchRequest = new SearchRequest("bi-tomcat-*"); searchRequest.scroll(scroll); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); QueryBuilder queryBuilder = QueryBuilders.boolQuery() .must(QueryBuilders.matchQuery("geoip.country_name", "China")) .must(QueryBuilders.matchQuery("geoip.region_name", "Zhejiang")) .must(QueryBuilders.matchQuery("verb", "POST")) .mustNot(QueryBuilders.termQuery("message", "sessionID")) .should(QueryBuilders.rangeQuery("timestamp").gte("2019-07-23").lte("2019-08-23")) .filter(QueryBuilders.rangeQuery("bytes").gte(1000).lte(10000)); searchSourceBuilder.query(queryBuilder); searchRequest.source(searchSourceBuilder); SearchResponse searchResponse = null; try { searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } String scrollId = searchResponse.getScrollId(); SearchHit[] searchHits = searchResponse.getHits().getHits(); var page = 1; while (searchHits != null && searchHits.length > 0) { SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId); scrollRequest.scroll(scroll); try { searchResponse = client.scroll(scrollRequest, RequestOptions.DEFAULT); } catch (IOException e) { e.printStackTrace(); } scrollId = searchResponse.getScrollId(); searchHits = searchResponse.getHits().getHits(); if (searchHits != null && searchHits.length > 0) { page++; System.out.println("第"+page+"页"); Arrays.asList(searchHits).stream().map(h -> h.getSourceAsString()).forEach(System.out::println); } } ClearScrollRequest clearScrollRequest = new ClearScrollRequest(); clearScrollRequest.addScrollId(scrollId); ClearScrollResponse clearScrollResponse; try { clearScrollResponse = client.clearScroll(clearScrollRequest, RequestOptions.DEFAULT); boolean succeeded = clearScrollResponse.isSucceeded(); System.out.println("清除滚屏是否成功:" + succeeded); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } close(client); } 3.创建客户端 /** * * 关闭客户端 * * @param client */ private static void close(RestHighLevelClient client) { try { client.close(); } catch (IOException e) { e.printStackTrace(); } } /** * 获取客户端 * * @return */ private static RestHighLevelClient getClient() { RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("elk-node01", 9200, "http"), new HttpHost("elk-node02", 9200, "http"), new HttpHost("elk-node03", 9200, "http"))); return client; } [Elasticsearch Java REST_-DocumentApi]: https://blog.csdn.net/u014646662/article/details/96473156 [Link 1]: https://www.cbedai.net/u014646662
还没有评论,来说两句吧...