gpt4 book ai didi

python - 从elasticsearch获取所有记录

转载 作者:行者123 更新时间:2023-12-03 01:24:50 26 4
gpt4 key购买 nike

我正在尝试使用python中的elasticsearch来获取和处理Elastic中的所有条目。有大约。 6000万条记录,我遇到的问题是,当我将大小增加到1M以上时,它什么也没有返回。

from elasticsearch import Elasticsearch

es = Elasticsearch("1.1.1.1:1234")

res = es.search(body={
"from": 0,
"size": 10000,
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "_exists_:my_string",
"fields": []
}
}
],
"filter": [
{
"bool": {
"must": [
{
"range": {
"timestamp": {
"from": "2019-11-01 01:45:00.000",
"to": "2019-11-05 07:45:00.300",
}
}
}
]
}
}
]
}
}
})


print("%d documents found" % res['hits']['total'])

我想将结果(基本上是JSON)转换为pandas数据框。这很好用,但是我在努力如何一次获取所有记录还是在迭代中这样做很费劲。

最佳答案

分页在像Elasticsearch这样的分布式系统中是一个非常昂贵的过程。默认情况下,size + offset参数的限制为10,000。
要获取所有记录以进行处理,可以使用Scroll API。

https://www.elastic.co/guide/en/elasticsearch/reference/7.1/search-request-scroll.html

它会按索引时间拍摄快照,并返回一个游标ID,您可以继续传递后续的请求,以获取下一批。

关于python - 从elasticsearch获取所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58708064/

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