资讯专栏INFORMATION COLUMN

python 用scroll查询大量es数据

mikasa / 4151人阅读

摘要:游标查询查询,可以用于对有效地执行大批量的文档查询,而又不用付出深度分页那种代价。启动游标查询其中的表示游标查询窗口保持分钟,如果一次取的数据量大可以设置为一个大一些的时间。完整代码用获取所有数据的完整代码如下过滤的每次取的数据量

游标查询
scroll查询,可以用于对 Elasticsearch 有效地执行大批量的文档查询,而又不用付出深度分页那种代价。
scroll查询可以分为以下两个步骤。

启动游标查询

GET /host/_search?scroll=1m

其中的scroll=1m表示游标查询窗口保持1分钟,如果一次取的数据量大可以设置为一个大一些的时间。
返回的字段中包含一个scroll_id, 接下来用这个字段可以获取后续值。

循环获取

循环获取余下的值

GET /_search/scroll
{
    "scroll": "1m", 
    "scroll_id" : scroll_id
}

通过上一步得到的scroll_id,获取余下的值。

完整代码

用Python获取所有数据的完整代码如下

def get_all_es_data(url):
    # 过滤的query
    query = {}
    data = []
    # 每次取的数据量
    size = 10000
    scroll_id = None
    try:
        while size == 10000:
            if not scroll_id:
                query["size"] = 10000
                curr_url = url + "/_search?scroll=8m"
                response = requests.post(curr_url, json.dumps(query), headers={"content-type": "application/json"})
            else:
                curr_url = url + "_search/scroll?scroll=8m&scroll_id=" + scroll_id
                response = requests.get(curr_url)
            if response:
                response = json.loads(response.text)
                scroll_id = response["_scroll_id"]
                response_data = [doc["_source"] for doc in response["hits"]["hits"]]
                data.extend(response_data)
    except Exception as err:
        pass

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/34517.html

相关文章

  • python scroll查询大量es数据

    摘要:游标查询查询,可以用于对有效地执行大批量的文档查询,而又不用付出深度分页那种代价。启动游标查询其中的表示游标查询窗口保持分钟,如果一次取的数据量大可以设置为一个大一些的时间。完整代码用获取所有数据的完整代码如下过滤的每次取的数据量 游标查询 scroll查询,可以用于对 Elasticsearch 有效地执行大批量的文档查询,而又不用付出深度分页那种代价。 scroll查询可以分为以下...

    HollisChuang 评论0 收藏0
  • Elasticsearch如何做到亿级数据查询毫秒级返回?

    摘要:类似于里的推荐商品不断下拉出来一页一页的类似于微博中,下拉刷微博,刷出来一页一页的,你可以用,关于如何使用,自行上网搜索。但是,这种只适合于类似微博下拉翻页的,不能随意跳到任何一页的场景。 showImg(https://segmentfault.com/img/bVbtkDJ?w=400&h=188);本文来源 | https://zhuanlan.zhihu.com/p/... 导...

    jcc 评论0 收藏0
  • [零基础学python]Python操作数据库(2)

    摘要:那就在进入到数据库,看看。查询数据在前面操作的基础上,如果要从数据库中查询数据,当然也可以用指针来操作了。从操作中看出来了,已经将数据库中第二条的用户名修改为了,用的就是语句。不过,要真的实现在数据库中更新,还要运行这就大事完吉了。 回顾一下已有的战果:(1)连接数据库;(2)建立指针;(3)通过指针插入记录;(4)提交将插入结果保存到数据库。在交互模式中,先温故,再知新。 >>> ...

    susheng 评论0 收藏0
  • Elasticsearch 压测方案之 esrally 简介

    摘要:我们来看下文件该文件主要包含下面几个部分和的描述文字一个地址,指明测试数据的下载根路径,与下方中的结合,可得到数据的下载地址。的配置位于目录默认是中下面。上面的命令便是执行一次压测,并指定使用的,运行该中的的,指定的为的实例。 由于 Elasticsearch(后文简称es) 的简单易用及其在大数据处理方面的良好性能,越来越多的公司选用 es 作为自己的业务解决方案。然而在引入新的解决...

    rainyang 评论0 收藏0
  • ES分布式架构及底层原理

    摘要:分布式架构原理设计的理念就是分布式搜索引擎,底层实现还是基于的,核心思想是在多态机器上启动多个进程实例,组成一个集群。 es分布式架构原理 elasticsearch设计的理念就是分布式搜索引擎,底层实现还是基于Lucene的,核心思想是在多态机器上启动多个es进程实例,组成一个es集群。一下是es的几个概念: 接近实时es是一个接近实时的搜索平台,这就意味着,从索引一个文档直到文档...

    Ocean 评论0 收藏0

发表评论

0条评论

mikasa

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<