Advertisement

ElasticSearch如何新增一列并将其现有内容填充到该新列中

阅读量:

ElasticSearch不支持对现有Field的数据类型或Analyzer进行修改,在项目中如需额外的检索需求且当前映射中的Analyzer无法满足这些需求时,则可以通过新增一个Field并定义相应的Analyzer来实现。

在项目中对name字段的初始设置为基于标准analyzer架构实现基本查询处理能力,并在子字段层面上引入keyword字段用于排序操作

复制代码
     "name": {
     "type": "text",
     "analyzer": "standard",
     "fields": {
         "keyword": {
             "type": "keyword"
         }
     }

为了提升name字段的搜索完整性,在现有数据量基础上优化相关功能

通过调研发现 search-as-you-type 数据类型正好匹配当前项目的功能需求

该数据类型能够有效支持实时搜索补全功能的应用场景

同时由于Index中已经存在大量数据(约几千万条记录)无法进行新索引构建操作

因此有必要修改当前Index的映射结构以新增一个字段

该字段将专门用于实现搜索补全所需的功能模块

1. update index mapping,将新field的mapping信息写入。

复制代码

全部评论 (0)

还没有任何评论哟~