[英]elasticsearch search request size limit error
我的 elasticsearch 版本 7.9.3(在 ubuntu 上运行)保存每天的索引(日志),因此当查询需要包含例如从 2020-01-01 到 2020-11-20 的数据时
搜索查询将如下所示:(返回错误 400)
http://localhost:9200/log_2020-02-14,log_2020-02-26,log_2020-02-27,log_2020-04-24,log_2020-04-25,log_2020-07-17,log_2020-08-01,log_2020-09-09,log_2020-09-21,log_2020-10-06,log_2020-10-07,log_2020-10-08,log_2020-10-16,log_2020-10-17,log_2020-10-18,log_2020-10-21,log_2020-10-22,log_2020-11-12/_search?pretty
我知道我可以将请求分成两部分,但我不明白为什么(HTTP 上的 4096 字节并不是那么大)
有机会配置这个问题吗?
回复:
{
"error": {
"root_cause": [
{
"type": "too_long_frame_exception",
"reason": "An HTTP line is larger than 4096 bytes."
}
],
"type": "too_long_frame_exception",
"reason": "An HTTP line is larger than 4096 bytes."
},
"status": 400
}
URL 不能超过特定大小,具体取决于媒体。 Elasticsearch 将该长度限制为 4096 字节。
由于您似乎愿意查询 2020 年从 1 月 1 日到今天(11 月 20 日)的所有索引,您可以使用这样的通配符:
http://localhost:9200/log_2020*/_search?pretty
另一种方法是利用别名并将所有 2020 索引放在log_2020
别名后面:
POST /_aliases
{
"actions" : [
{ "add" : { "index" : "log_2020*", "alias" : "log_2020" } }
]
}
运行后可以直接查询别名
http://localhost:9200/log_2020/_search?pretty
如果您想确保所有日常索引在创建时都获得别名,您可以添加一个索引模板
PUT _index_template/my-logs
{
"index_patterns" : ["log_2020*"],
"template": {
"aliases" : {
"log_2020" : {}
}
}
}
更新
如果您需要在 2020-03-04 和 2020-09-21 之间查询,您可以使用日期字段上的range
查询来查询log_2020
别名
POST log_2020/_search
{
"query": {
"range": {
"@timestamp": {
"gte": "2020-03-04",
"lt": "2020-09-22"
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.