gpt4 book ai didi

python - 使用Python API在Elasticsearch中滚动时出现段错误

转载 作者:行者123 更新时间:2023-12-03 00:09:51 28 4
gpt4 key购买 nike

我正在使用Elasticsearch Python API根据存储在ES集群中的数据计算一些数据。为了进行计算,我需要调用所有满足某些条件的文档,并从中获取某些信息。因此,我正在做一个大小为1000且持续时间为1秒的滚动。我编写了一个Python脚本,该脚本使用ES-Python为我完成工作。

但是,总是在超过1400次滚动之后,脚本才会退出,并显示错误“Segmentation fault (core dumped)”。我尝试将滚动大小增加到10000,但是仍然发生相同的问题。以下是我正在滚动的脚本部分:

page = Elasticsearch().search(index = my_index, scroll = "1s", size = 1000, body = { "_source" : [ "_id", "@timestamp", my_field], "query" : {"bool":{"must" : [{"exists":{ "field" : my_field }},{"exists":{ "field" : "@timestamp" }}]}}})
sid = page['_scroll_id']
scroll_size = page['hits']['total']
while (scroll_size > 0):
print "Scrolling..."
# Get the number of results that we returned in the last scroll
scroll_size = len(page['hits']['hits'])
print "scroll size: " + str(scroll_size)
page = Elasticsearch().scroll(scroll_id = sid, scroll = '1s')
# Update the scroll ID
sid = page['_scroll_id']

我发现该行 page = Elasticsearch().scroll(scroll_id = sid, scroll = '1s')是造成该错误的原因。我已经检查了滚动ID,它始终是相同的(至少直到抛出错误为止)。
是否有人遇到过类似的问题,或者有人知道如何解决?

我在操作系统Ubuntu 14.04的同一服务器上同时运行Python和Elasticsearch。 Python版本是2.7.6,ES版本是5.0.0

最佳答案

(将其发布为答案,因为代码格式在注释中不起作用)

尝试这样的事情:

import elasticsearch
import elasticsearch.helpers

scanner = elasticsearch.helpers.scan(client=elasticsearch.Elasticsearch), index=my_index, query={...}, scroll='1s')
for doc in scanner:
#Do something

关于python - 使用Python API在Elasticsearch中滚动时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41801707/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com