一日一技:如何从Elasticsearch读取极大量的数据

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 一日一技:如何从Elasticsearch读取极大量的数据

在使用Elasticsearch时,如果要返回少量的数据,我们可以在DSL语句中指定size这个参数来设定返回多少条数据:

{
  ...其他查询条件...
  "size": 1000
}

然而,如果你要查询极其大量的数据,例如10亿条,那么这种方式就不实用了。因为在默认情况下, size参数和 from参数之和不能超过10000,即使你修改了Elasticsearch的配置,提高了这个和的上限,也不可能无休止得把它加大。所以在查询极大量数据时,需要使用 scroll关键字来实现。

当我们使用Python + elasticsearch-py来读取Elasticsearch时,可以这样使用scroll:

body = {'你的DSL语句'}
res = es.search(index='index', body=body, scroll='2m')
sid = res['_scroll_id']
scroll_size = len(res['hits']['hits'])
process_hit(res['hits']['hits'])
while scroll_size > 0:
    data = es.scroll(scroll_id=sid, scroll='2m')
    process_hit(data['hits']['hits'])
    sid = data['_scroll_id']
    scroll_size = len(data['hits']['hits'])

其中, process_hit用于处理当前这一批的数据。scroll参数的值 2m表示2分钟。

这种做法的原理,实际上就是每次读取若干条(通过DSL中的 size关键字设定),分多次读取,直到读完为止。后一次读的时候,从前一次返回的 _scroll_id对应的id开始读。这样每一次读取的结果就可以接在一起了。当某一次读取的结果为空时,说明已经把所有数据全部读完了,就可以停止了。

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
目录
相关文章
|
API 网络架构 索引
Elasticsearch索引中数据的增删改查与并发控制
Elasticsearch索引中数据的增删改查与并发控制
125 0
|
存储 监控 数据挖掘
使用 Meltano 将数据从 Snowflake 导入到 Elasticsearch:开发者之旅
【6月更文挑战第9天】Meltano,一个开源数据集成框架,简化了从Snowflake到Elasticsearch的数据迁移。这个工具支持多种数据源,提供易于配置的界面。要开始,需安装Meltano并配置连接信息。一个简单的YAML示例展示了如何定义从Snowflake到Elasticsearch的迁移任务。Meltano自动执行迁移,同时提供监控和日志功能。借助Meltano,用户能高效集成数据,提升搜索和分析能力,适应不断增长的数据需求和挑战。
242 6
|
9月前
|
弹性计算 运维 Serverless
超值选择:阿里云Elasticsearch Serverless在企业数据检索与分析中的高性能与灵活性
本文介绍了阿里云Elasticsearch Serverless服务的高性价比与高度弹性灵活性。
405 8
|
11月前
|
Web App开发 JavaScript Java
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
这篇文章是关于如何使用Spring Boot整合Elasticsearch,并通过REST客户端操作Elasticsearch,实现一个简单的搜索前后端,以及如何爬取京东数据到Elasticsearch的案例教程。
715 0
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
|
存储 缓存 监控
|
11月前
|
消息中间件 监控 关系型数据库
MySQL数据实时同步到Elasticsearch:技术深度解析与实践分享
在当今的数据驱动时代,实时数据同步成为许多应用系统的核心需求之一。MySQL作为关系型数据库的代表,以其强大的事务处理能力和数据完整性保障,广泛应用于各种业务场景中。然而,随着数据量的增长和查询复杂度的提升,单一依赖MySQL进行高效的数据检索和分析变得日益困难。这时,Elasticsearch(简称ES)以其卓越的搜索性能、灵活的数据模式以及强大的可扩展性,成为处理复杂查询需求的理想选择。本文将深入探讨MySQL数据实时同步到Elasticsearch的技术实现与最佳实践。
560 0
|
自然语言处理 索引
ElasticSearch 实现分词全文检索 - 测试数据准备
ElasticSearch 实现分词全文检索 - 测试数据准备
125 1
|
数据采集 人工智能 自然语言处理
阿里云Elasticsearch AI语义搜索:解锁未来搜索新纪元,精准洞察数据背后的故事!
【8月更文挑战第2天】阿里云Elasticsearch AI场景语义搜索最佳实践
497 5
|
存储 安全 文件存储
【elasticsearch】es6重启服务后数据消失,es6如何配置数据持久化储存
【elasticsearch】es6重启服务后数据消失,es6如何配置数据持久化储存
257 1
|
索引
利用滚动索引来管理海量Elasticsearch数据
利用滚动索引来管理海量Elasticsearch数据
298 3