ElasticSearch不支持更改已有Field的数据类型以及Analyzer,项目中如果需要额外的检索需求,当前mapping中的analyzer不能满足时,可以通过新增加一个filed并定义额外的Analyzer来实现。
项目中name列最开始的定义如下,采用标准analyzer提供基础的查询功能,子field中定义了keyword用来排序
"name": {
"type": "text",
"analyzer": "standard",
"fields": {
"keyword": {
"type": "keyword"
}
}
现需要对name增加搜索补全的功能,经过调研,search-as-you-type 数据类型正好能满足项目需求,由于Index中已经有几千万数据(不方便重新建立new index),所以需要更改Index的mapping增加一个field来实现这个需求。
1. update index mapping,将新field的mapping信息写入。
POST /your_index_name/_mapping
{
"pr