如何使fetch_size在OpenSearch SQL插件生效?OpenSearch 2.5.3异常问题
OpenSearch 2.5.3 SQL插件fetch_size参数报错问题解决
在OpenSearch 2.5.3版本中使用SQL插件时,添加fetch_size参数后触发500错误,提示Index type [my_opensearch_index] does not exist,但移除该参数后查询可正常返回结果。
问题复现
- 正常查询(无fetch_size):
POST _plugins/_sql/ { "query" : "SELECT start_time FROM my_opensearch_index" }
响应返回200条数据(SQL查询默认size值),状态码200。
- 添加fetch_size后的异常查询:
POST _plugins/_sql/ { "fetch_size" : 5, "query" : "SELECT start_time FROM my_opensearch_index" }
响应返回500错误,错误信息:
{ "error": { "reason": "There was internal problem at backend", "details": "Index type [my_opensearch_index] does not exist", "type": "IllegalArgumentException" }, "status": 500 }
原因排查与解决方法
- 调整参数嵌套格式
OpenSearch 2.5.3的SQL插件对fetch_size参数的位置有要求,需嵌套在request对象中,而非与query同级。修改请求格式后重试:
POST _plugins/_sql/ { "query" : "SELECT start_time FROM my_opensearch_index", "request": { "fetch_size": 5 } }
- 替代方案:使用LIMIT子句
如果参数格式调整后仍无效,可直接在SQL语句中使用LIMIT子句实现分页效果,绕过fetch_size参数的bug:
POST _plugins/_sql/ { "query" : "SELECT start_time FROM my_opensearch_index LIMIT 5" }
版本升级修复bug
该问题属于OpenSearch 2.5.3版本SQL插件的已知兼容性bug,后续2.6.0及以上版本已修复。若条件允许,直接升级OpenSearch集群及SQL插件至新版本即可解决。验证索引映射
虽然无fetch_size时查询正常,但报错信息提及索引类型问题,可执行以下命令确认索引映射及名称正确性(OpenSearch索引名称区分大小写):
GET my_opensearch_index/_mapping
内容的提问来源于stack exchange,提问作者rrlamichhane
相关产品推荐
相关产品推荐

