java获取elasticsearch所有的数据

您所在的位置:网站首页 java中es怎么用 java获取elasticsearch所有的数据

java获取elasticsearch所有的数据

2023-07-29 09:09| 来源: 网络整理| 查看: 265

 

注意:下面的代码是用的java-high客户端

在贴出程序之前先提出几个问题,首先在搜索引擎中任何时候涉及到批量数据处理的时候,都不可能在一次请求中获取到所有的数据,这样是为了节省内存,而且全部拿到也不现实,一般都是分页获取的,也就是说先给你展示,下一页的话通过你的点击会从上次展示的位置往后获取数据,而这个位置你可以理解为位置指针。就这样循环获取循环请求才能真正的将数据全部拿到。下面的程序我没有做整理,不过认真看的话,你呢个get到你的点。

public static void ScroolSearchID(String sourceIndex,String desIndex) { try { SearchRequest searchRequest = new SearchRequest(sourceIndex); //请求设置 SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(QueryBuilders.matchAllQuery()); searchSourceBuilder.fetchSource(false); searchSourceBuilder.size(1000); searchRequest.scroll(TimeValue.timeValueMinutes(5L)); searchRequest.source(searchSourceBuilder); // 请求发送 SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); SearchHit[] searchHit = searchResponse.getHits().getHits(); int i = 1; while ((searchHit != null && searchHit.length > 0)) { try { //自定义处理查询结果代码 searchHit 就是查询结果 } catch (Exception e) { e.printStackTrace(); } // 重置searchResponse 和ID String scrollId = searchResponse.getScrollId(); SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId); scrollRequest.scroll(TimeValue.timeValueMinutes(5)); searchResponse = client.scroll(scrollRequest, RequestOptions.DEFAULT); searchHit = searchResponse.getHits().getHits(); i++; } } catch (IOException e) { e.printStackTrace(); } }

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3