Elasticsearch Java REST高级客户端SearchScrollApi

迈不过友情╰ 2021-11-27 01:30 370阅读 0赞

Elasticsearch Java REST高级客户端SearchScrollApi

版本:Elasticsearch 7.2.0

maven配置见:Elasticsearch Java REST高级客户端-DocumentApi

SearchScroll和search的使用时是很相似的,只是在search上多了个滚动

对人工智能感兴趣的同学,可以点击以下链接:

现在人工智能非常火爆,很多朋友都想学,但是一般的教程都是为博硕生准备的,太难看懂了。最近发现了一个非常适合小白入门的教程,不仅通俗易懂而且还很风趣幽默。所以忍不住分享一下给大家。点这里可以跳转到教程。

https://www.cbedai.net/u014646662

下面是Elasticsearch 滚动查询(或是分页查询)

  1. public static void searchScroll() {
  2. RestHighLevelClient client = getClient();
  3. final Scroll scroll = new Scroll(TimeValue.timeValueMinutes(1L));
  4. SearchRequest searchRequest = new SearchRequest("movies");
  5. searchRequest.scroll(scroll);
  6. SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
  7. MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("title", "you life");
  8. searchSourceBuilder.query(matchQueryBuilder);
  9. searchRequest.source(searchSourceBuilder);
  10. SearchResponse searchResponse = null;
  11. try {
  12. searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
  13. } catch (IOException e) {
  14. // TODO 自动生成的 catch 块
  15. e.printStackTrace();
  16. }
  17. String scrollId = searchResponse.getScrollId();
  18. SearchHit[] searchHits = searchResponse.getHits().getHits();
  19. var page = 1;
  20. while (searchHits != null && searchHits.length > 0) {
  21. SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);
  22. scrollRequest.scroll(scroll);
  23. try {
  24. searchResponse = client.scroll(scrollRequest, RequestOptions.DEFAULT);
  25. } catch (IOException e) {
  26. e.printStackTrace();
  27. }
  28. scrollId = searchResponse.getScrollId();
  29. searchHits = searchResponse.getHits().getHits();
  30. if (searchHits != null && searchHits.length > 0) {
  31. page++;
  32. System.out.println("第"+page+"页");
  33. Arrays.asList(searchHits).stream().map(h -> h.getSourceAsString()).forEach(System.out::println);
  34. }
  35. }
  36. ClearScrollRequest clearScrollRequest = new ClearScrollRequest();
  37. clearScrollRequest.addScrollId(scrollId);
  38. ClearScrollResponse clearScrollResponse;
  39. try {
  40. clearScrollResponse = client.clearScroll(clearScrollRequest, RequestOptions.DEFAULT);
  41. boolean succeeded = clearScrollResponse.isSucceeded();
  42. System.out.println("清除滚屏是否成功:" + succeeded);
  43. } catch (IOException e) {
  44. // TODO 自动生成的 catch 块
  45. e.printStackTrace();
  46. }
  47. close(client);
  48. }
  49. /**
  50. *
  51. * 关闭客户端
  52. *
  53. * @param client
  54. */
  55. private static void close(RestHighLevelClient client) {
  56. try {
  57. client.close();
  58. } catch (IOException e) {
  59. e.printStackTrace();
  60. }
  61. }
  62. /**
  63. * 获取客户端
  64. *
  65. * @return
  66. */
  67. private static RestHighLevelClient getClient() {
  68. RestHighLevelClient client = new RestHighLevelClient(
  69. RestClient.builder(new HttpHost("elk-node01", 9200, "http"), new HttpHost("elk-node02", 9200, "http"),
  70. new HttpHost("elk-node03", 9200, "http")));
  71. return client;
  72. }

上一篇:Elasticsearch Java REST高级客户端SearchApi

发表评论

表情:
评论列表 (有 0 条评论,370人围观)

还没有评论,来说两句吧...

相关阅读