springboot3集成elasticsearch8时,Completion类型一直添加不成功,这是为啥?

作者站长头像
站长
· 阅读数 5

我的实体类:

@CompletionField(maxInputLength = 200)
private Completion titleSuggestion;

保存的方法

UrlIndex urlIndex = elasticsearchOperations.save(url);

通过devtools查询是不是Completion类型:

GET /xxx/_mapping

发现是text类型

"titleSuggestion": {
  "properties": {
    "input": {
      "type": "text",
      "fields": {
        "keyword": {
          "type": "keyword",
          "ignore_above": 256
        }
      }
    }
  }
},

这是为什么?

回复
1个回答
avatar
test
2024-06-29

解决了,原来要提前声明设置,如下:

PUT xxx
{
  "mappings": {
    "properties": {
      "titleSuggestion": {
        "type": "completion",
        "analyzer": "ik_smart"
      }
    }
  }
}

加好之后,再执行命令就可以看到了:

GET /xxx/_mapping

执行结果成功了!

"titleSuggestion": {
  "type": "completion",
  "analyzer": "ik_smart",
  "preserve_separators": true,
  "preserve_position_increments": true,
  "max_input_length": 50
},
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容