You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

ElasticSearch中非对象类型字段配置enabled:false及字节类型字段配置报错的技术咨询

ElasticSearch中非对象类型字段配置enabled:false及字节类型字段配置报错的技术咨询

兄弟,我太懂你现在的困惑了——你想给那个不需要搜索的字节数组字段设置禁用索引,同时用byte类型来节省存储空间,但配置"enabled":false后却触发了报错对吧?

其实问题出在ElasticSearch的参数规则上:enabled这个参数只对object类型的字段生效,像byte这种基础数据类型根本不支持这个配置项,所以才会抛出mapper_parsing_exception,提示你这个参数对byte类型的字段是未知的。

那该怎么满足你的需求呢?给你两个适配的解决方案:

  • 如果你只是想禁用该字段的搜索能力,同时保留byte类型来节省空间,直接把enabled:false换成index:false就可以了。这个参数是专门给基础数据类型用来关闭索引的,配置如下:

    "colbert_b": {"type": "byte", "index": false}
    

    这样设置后,这个字段既会以byte类型存储(最大程度节省空间),又无法被用于任何搜索操作,完全契合你的需求。

  • 如果你要存储的是字节数组(也就是多个byte值的集合),也不用额外声明数组类型——ElasticSearch天然支持数组格式的数据,只要你传入的是数组形式的值,上面的配置同样能生效,它会自动把字段处理成byte类型的数组。

再给你补个小知识点:enabled:false的作用是让整个object类型字段不被解析、不生成任何索引,但基础类型本身没有子字段结构,这个参数对它们来说根本没有存在的意义,所以ES直接拒绝了这个配置~

备注:内容来源于stack exchange,提问作者Miguel

火山引擎 最新活动