ElasticSearch如何新添加一列并将已有列内容填入

本文介绍了在ElasticSearch中如何为已有索引新增字段以满足搜索补全功能,因不支持修改已有字段,故通过新增字段并填充数据来实现。首先更新index mapping,然后将原有name列数据填充到新字段name_new,该过程可能耗时较长,特别是针对大量数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
{
    "properties": {
        "name_new": {
            "type": "search_as_you_type"
        }
    }
}

2. 将name列中的数据填入新列

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值