【发布时间】:2022-01-17 17:48:01
【问题描述】:
我在我的 elasticsearch 服务器(localhost:9200) 中创建了一个索引,用于获取应用程序的日志文件。这些数据超过 25GB(JSON 数据),我花了将近 3 个小时将其从 Logstash 发送到 Elasticsearch。
根据http://localhost:9200/_cat/indices?v的请求,可以看到我的索引有超过2200万个文档。
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open test i4nRcsZ8SJyjuKXpH2lI_A 1 1 22240500 0 11.5gb 11.5gb
当我搜索特定字段及其值时,ES 需要很长时间才能从我的索引中搜索并获取结果。我知道我的输出将包含超过 10,000 个文档,这就是为什么我在 python 中使用SCAN 函数而不是SEARCH。
我选择 ES 的唯一原因是它需要很短的时间来提供输出,但在我的情况下,它需要几分钟,并且在大多数测试中我从 ES 收到超时错误。
query = {
"_source" : ['full_log'],
"query" : {
"match" : {
"location" : "192.168.0.1"
}
}
}
rel = scan(client=es,
query=query,
scroll='1m',
index='test',
raise_on_error=True,
preserve_order=False,
clear_scroll=True)
如何提高搜索结果的时间?
NETFLIX 的搜索引擎也是这样检索数据的吗?
【问题讨论】:
标签: python database elasticsearch