如何在OpenSearch模板中创建不可搜索字段?(enabled:false无效)
如何在OpenSearch模板中将字段设置为不可搜索
要让application_name这类字段完全不可搜索,你可以根据需求选择以下两种配置方式:
方式一:完全跳过字段处理(不可搜索也不解析)
直接在目标字段的顶级属性中添加"enabled": false,这会让OpenSearch完全忽略该字段的处理——既不创建索引,也不解析内容,自然无法被搜索到。修改后的模板配置如下:
{ "properties": { "source": { "fields": { "keyword": { "ignore_above": 256, "type": "keyword" } }, "type": "text" }, "application_name": { "enabled": false }, "message": { "fields": { "keyword": { "ignore_above": 256, "type": "keyword" } }, "type": "text" } } }
方式二:保留存储但不可搜索
如果你需要在查询结果中返回该字段的值,但不允许通过该字段搜索内容,可以设置"index": false。注意:如果字段包含子字段(比如你的keyword子字段),必须给子字段也加上"index": false,否则子字段依然可被搜索:
{ "properties": { "source": { "fields": { "keyword": { "ignore_above": 256, "type": "keyword" } }, "type": "text" }, "application_name": { "index": false, "fields": { "keyword": { "ignore_above": 256, "type": "keyword", "index": false } }, "type": "text" }, "message": { "fields": { "keyword": { "ignore_above": 256, "type": "keyword" } }, "type": "text" } } }
为什么之前添加enabled:false没生效?
常见原因有两个:
- 模板仅对新索引生效:OpenSearch的索引模板只会应用在修改模板之后创建的新索引上,已存在的索引不会自动更新映射。如果要修改现有索引的字段配置,需要使用PUT Mapping API手动更新。
- 配置位置错误:如果把
enabled:false加在了fields.keyword子字段下,只会禁用子字段的索引,主text字段依然会被索引,必须确保配置在目标字段的顶级属性中。
内容的提问来源于stack exchange,提问作者Nikolay Debolsky
相关产品推荐
相关产品推荐

