如何通过SQL API获取AWS Open Search中的keyword子字段
AWS OpenSearch SQL API获取.keyword字段的解决方案
你可以通过以下几种方式实现需求:
- 显式在SQL语句中指定带.keyword后缀的字段
OpenSearch SQL底层可以识别多字段路径,即使元数据接口没有返回.keyword字段,直接写完整字段名查询依然有效,示例语句如下:SELECT color.keyword, name.keyword FROM <你的索引名> LIMIT 10 - 开启SQL插件的多字段支持配置
你可以修改全局配置项opensearch.sql.multi_field_support.enabled为true,开启后调用DESCRIBE等元数据查询接口就会自动返回所有带.keyword后缀的多字段。AWS托管OpenSearch服务可以直接在域控制台的「高级集群参数」中修改该配置,无需重启节点,修改后数分钟即可生效。 - 调用索引映射接口主动提取字段列表
你可以直接调用原生REST API查询索引的完整映射结构,自行解析提取所有keyword子字段:
返回结果中会完整列出所有字段和子字段的类型配置,提取到的.keyword字段可以直接用于后续SQL查询。GET /<你的索引名>/_mapping - 升级OpenSearch域版本
你当前使用的v1.0.0属于早期发布版本,SQL插件的多字段兼容能力不完善,可以将域升级到v1.3以上的长期支持版本,该版本已经对齐Elasticsearch的字段返回逻辑,默认会在元数据查询结果中包含所有.keyword后缀的多字段。
注意:如果你的keyword字段配置了
ignore_above: 256,长度超过256的文本内容不会被索引到keyword字段,查询时会返回空值。
内容的提问来源于stack exchange,提问作者TAMILARASAN R
相关产品推荐
相关产品推荐

