You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改Elasticsearch Mapping报错:无法转换term.index为布尔值

解决Elasticsearch映射更新的Could not convert [term.index] to boolean错误

嘿,这个问题我太熟了!你遇到的错误核心原因是用了Elasticsearch旧版本的语法,而当前版本的index参数已经是布尔类型(只能传true/false),不再支持"not_analyzed"这个字符串值。

先拆解下你的问题:

  • 你想让term字段不被分析,但给text类型设置"index": "not_analyzed"是完全错误的——not_analyzed是旧版本里用来标记字段不分析的方式,现在这个需求已经被keyword类型替代了。
  • 另外你的请求路径PUT /in_test/_mapping/keyword也不对,更新映射不需要在路径里加/keyword。

给你两种针对性的解决方案:

方案1:直接将字段设为keyword类型(满足“不被分析”的需求)

如果你的需求就是让term字段做精确匹配、聚合等操作,不需要全文分析,直接把类型改成keyword就好,它默认就是不分析的:

PUT /in_test/_mapping
{
  "properties": {
    "term": {
      "type": "keyword"
    }
  }
}

方案2:使用多字段(同时支持全文搜索和精确匹配)

如果你既需要term字段能做全文搜索(用text类型的分析能力),又需要它能做精确匹配/聚合,那就用多字段(multi-fields)配置:

PUT /in_test/_mapping
{
  "properties": {
    "term": {
      "type": "text",
      "fields": {
        "raw": {
          "type": "keyword"
        }
      }
    }
  }
}

这样之后,你可以用term字段做全文搜索,用term.raw字段做精确匹配或者聚合操作,完美兼顾两种需求。

内容的提问来源于stack exchange,提问作者Kunal Kakade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:06:07