ElasticSearch5.x—条件查询获取所有doc Java实现
来源:互联网 发布:监控系统网络拓扑图 编辑:程序博客网 时间:2024/06/05 08:35
在Elasticsearch老版本中做数据遍历一般使用Scroll-Scan。Scroll是先做一次初始化搜索把所有符合搜索条件的结果缓存起来生成一个快照,然后持续地、批量地从快照里拉取数据直到没有数据剩下。而这时对索引数据的插入、删除、更新都不会影响遍历结果,因此scroll 并不适合用来做实时搜索。Scan是搜索类型,告诉Elasticsearch不用对结果集进行排序,只要分片里还有结果可以返回,就返回一批结果。
在5.X版本中SearchType.SCAN已经被去掉了。根据官方文档说明,使用“_doc”做排序可以达到更高性能的Scroll查询效果,这样可以遍历所有文档而不需要进行排序。
public class ScrollTest {public static void main(String[] args) {JSONObject resultObject = null;Client esClient = ESClientHelper.getInstance().getClient();SearchResponse searchResponse = esClient.prepareSearch("index") //设置索引名 .setTypes("type") //设置索引类型.setQuery(QueryBuilders.matchAllQuery()).addSort(SortBuilders.fieldSort("_doc")).setSize(30)// 这个游标维持多长时间.setScroll(TimeValue.timeValueMinutes(8)).execute().actionGet();System.out.println(searchResponse.getScrollId());System.out.println(searchResponse.getHits().getTotalHits());System.out.println(searchResponse.getHits().hits().length);for (SearchHit hit : searchResponse.getHits()) {String json = hit.getSourceAsString();try {resultObject = new JSONObject(json);} catch (JSONException e) {e.printStackTrace();}}// 使用上次的scrollId继续访问ScrollTest2 scroll = new ScrollTest2();do{int num = scroll.scanData(esClient,searchResponse.getScrollId());if(num ==0) break;}while(true);}private int scanData (Client esClient, String scrollId){SearchResponse searchResponse = esClient.prepareSearchScroll(scrollId).setScroll(TimeValue.timeValueMinutes(8)).execute().actionGet();System.out.println(searchResponse.getScrollId());System.out.println(searchResponse.getHits().getTotalHits());int num = searchResponse.getHits().hits().length;System.out.println(searchResponse.getHits().hits().length);JSONObject resultObject = null;for (SearchHit hit : searchResponse.getHits()) {String json = hit.getSourceAsString();try {resultObject = new JSONObject(json);} catch (JSONException e) {e.printStackTrace();}}return num;}}
阅读全文
0 0
- ElasticSearch5.x—条件查询获取所有doc Java实现
- ElasticSearch5.X—模糊查询和获取所有索引字段
- elasticsearch5.x的java实现搜索
- ElasticSearch5.X搜索条件的聚合(六)
- formData-JSon,java解析Excle,获取父类泛型,spring整合jpa实现条件分页查询
- Elasticsearch5.3 JAVA Demo 聚合查询
- java实现mongoDB的多条件查询
- java操作mongDB实现多条件查询
- Java实现--替换文本文件中所有符合条件的字符串
- 根据条件判断查询指定条件还是所有条件
- Tapestry 实现条件查询
- 实现按条件查询
- Mybatis实现条件查询
- Java 获取接口所有实现类
- elasticsearch5.x服务器搭建
- SpringBoot + Elasticsearch5.x
- Elasticsearch5.X配置说明
- Elasticsearch5.X索引
- springboot test
- 俏丽的草丛之实习日志二
- Field 'id' doesn't have a default value
- 如何追求高质量的代码?
- 近期热门领域新鲜数据集汇总!
- ElasticSearch5.x—条件查询获取所有doc Java实现
- 记录一次phoenix启动报错
- 渲染不确定
- SVG窗口自适应脚本编写
- Spring面试题
- 国际社交平台app
- 微服务拆分需要考虑的必要因素与坚持原则
- poi导入读取时间格式问题
- 网页添加超链接