如果在 elasticsearch 中使用query_string 并在大型数据集上进行不幸的查询,则几乎可以使集群崩溃,并且可能需要很长时间才能完成查询。如果您允许用户指定任意查询字符串,这可能是一个严重的问题。
那么,有没有办法限制查询所需的时间和/或资源?如果您可以告诉 elasticsearch 在 10 秒后自动中止查询,那将有很大帮助。
您可以在请求正文或uri request中传递搜索“超时” 。如果在收集所有结果之前搜索请求超时,将返回部分结果。
这是一个 10 秒的 uri 请求示例(单位为毫秒):
http://localhost:9200/_search?timeout=10000
如果您将超时设置得足够低,则返回的 json 将显示“timed_out”:true。