首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提高elasticsearch-py扫描的速度

提高elasticsearch-py扫描的速度
EN

Stack Overflow用户
提问于 2018-07-10 21:29:00
回答 2查看 1.7K关注 0票数 1

我正在寻找一种方法来提高滚动扫描我的elasticsearch数据的速度。

下面的python代码扫描多个索引,并将结果输出到控制台和某个位置的文件中。

我的测试得出的结论是,这种方法效率极低,并且需要大量的时间(10个事件/秒?)。我猜这是由一些内部默认值或限制引起的。

有没有一种方法可以让我设计出更好的性能呢?

代码语言:javascript
复制
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, Q

client = Elasticsearch(
    [
        'http://localhost:9201/',
    ],
    verify_certs=True
)

search = Search(using=client, index="test1,test2,test3") \
    .filter(Q("wildcard", name="bob*") & Q("term", color="green")) \
    .filter('range', **{'@timestamp':{'gte': 'now-2d', 'lt': 'now'}}) \
    .sort('@timestamp') \
    .params(preserve_order=True)



file = open("X:/files/people.txt", "a")
for hit in search.scan():
    line = (hit.message + "\n")
    file.write(line)
    print(line)

file.close()

感谢您对此进行研究:)

EN

回答 2

Stack Overflow用户

发布于 2019-10-17 23:42:15

这是一个老问题,但可能会对其他人有所帮助:

可以尝试的另外两件事是调整size,找到一个适合您的环境的最佳值。另外,如果你不需要完整的_source,试着用_source_exclude_source_include去掉字段,我已经看到使用它们的性能有了很大的提高。

票数 1
EN

Stack Overflow用户

发布于 2018-07-11 22:36:32

使其更快的最佳方法是删除sortpreserve_order参数。您还可以查看切片滚动以使用multiprocessing并行运行多个扫描,您可以在(0)中看到一个示例。希望这能有所帮助!

0- https://github.com/elastic/elasticsearch-dsl-py/issues/817#issuecomment-372271460

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51266587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档