Elasticsearch如何更新mapping_大数据_宁千阳博客-CSDN博客

标签: | 发表时间:2020-04-07 17:32 | 作者:
出处:https://blog.csdn.net

Elasticsearch 的 mapping 在创建 indices时即已确定,无法更改。那么,当我们需要更新 mapping 时,该如何是好呢?

基本思路

当我们在创建一条索引时,添加好 mapping 后,可设置一个 alias指向该索引,然后生产环境采用该 alias来索引数据。当然,如果没有这样做的话,建议趁早备份,修改 API 。

既然已创建的 indices 无法修改,我们可以重新创建一个新的 indices, 然后将原 indices 上的数据复制到新的 indices 上,再将 alias指向新 indices。最后,删除原索引。

参数说明

  • 当前索引名称: test_v1
  • 生产索引名称: test
  • 目标索引名称: test_v2

操作步骤

  1. 将生产索引指向当前索引: test-> test_v1

  2. 创建新索引 test_v2

    • Method: PUT
    • Url: http://localhost:9200/test_v2
    • Body:

                    {
          "mappings":{
              "content":{
                  "properties":{
                      "title":{
                          "type":"text",
                          "fields":{
                          "accurate":{ "type":"keyword"}},
                          "analyzer":"ik_smart",
                          "search_analyzer":"ik_smart",
                          "include_in_all":"true"},
                      "content":{
                          "type":"text",
                          "analyzer":"ik_smart",
                          "search_analyzer":"ik_smart",
                          "include_in_all":"true"},
                      "author":{ "type":"keyword"},
                      "category":{ "type":"keyword"}}}}}
  3. 复制数据: test_v1-> test_v2

  4. 修改别名: test-> test_v2

    • Method: POST
    • Url: http://localhost:9200/_aliases
    • Body:

                    {
          "actions":[
              { "remove" :{ "index" :"test_v1", "alias" :"test"}},
              { "add" :{ "index" :"test_v2", "alias" :"test"}}
          ]}
  5. 删除旧索引: test_v1

小结

至此,我们达到了伪更新的效果。不过这里存在一个问题,如果数据量超大的话,复制数据所消费的时间比较多,所以请在构建索引前尽量考虑周全。

相关 [elasticsearch 更新 mapping] 推荐:

[译]elasticsearch mapping

- - an74520的专栏
es的mapping设置很关键,mapping设置不到位可能导致索引重建. 请看下面各个类型介绍^_^. 每一个JSON字段可以被映射到一个特定的核心类型. JSON本身已经为我们提供了一些输入,支持 string,  integer/ long,  float/ double,  boolean, and  null..

elasticsearch文档-字段的mapping

- - 开源软件 - ITeye博客
elasticsearch文档-字段的mapping. Mapping是指定义如何将document映射到搜索引擎的过程,比如一个字段是否可以查询以及如何分词等,一个索引可以存储含有不同"mapping types"的documents,ES允许每个mapping type关联多个mapping定义.

elasticsearch更改mapping(不停服务重建索引)

- - zzm
Elasticsearch的mapping一旦创建,只能增加字段,而不能修改已经mapping的字段. 但现实往往并非如此啊,有时增加一个字段,就好像打了一个补丁,一个可以,但是越补越多,最后自己都觉得惨不忍睹了. 这里有一个方法修改mapping,那就是重新建立一个index,然后创建一个新的mapping.

用户体系搭建之ID-Mapping

- - 标点符
在推进用户画像和风险控制时,遇到的最大的问题是用户身份信息的混乱:. 相同用户,不同渠道下账号不相同,如微信小程序和APP. 同个用户,在不同的设备商登录. ID-Mapping是大数据分析中非常基本但又关键的环节,ID-Mapping通俗的说就是把几份不同来源的数据,通过各种技术手段识别为同一个对象或主题,例如同一台设备(直接),同一个用户(间接),同一家企业(间接)等等,可以形象地理解为用户画像的“拼图”过程.

使用elasticsearch遇到的一些问题以及解决方法(不断更新)

- - 行业应用 - ITeye博客
     因为gc时会使jvm停止工作,如果某个节点gc时间过长,master ping3次(zen discovery默认ping失败重试3次)不通后就会把该节点剔除出集群,从而导致索引进行重新分配. (1)优化gc,减少gc时间. (2)调大zen discovery的重试次数(es参数:ping_retries)和超时时间(es参数:ping_timeout).

Elasticsearch如何更新mapping_大数据_宁千阳博客-CSDN博客

- -
Elasticsearch 的 mapping 在创建. indices时即已确定,无法更改. 那么,当我们需要更新 mapping 时,该如何是好呢. 当我们在创建一条索引时,添加好 mapping 后,可设置一个. alias指向该索引,然后生产环境采用该. 当然,如果没有这样做的话,建议趁早备份,修改 API.

[原]生产环境使用elasticsearch遇到的一些问题以及解决方法(不断更新)

- - 云端分布式搜索技术
1.由gc引起节点脱离集群      因为gc时会使jvm停止工作,如果某个节点gc时间过长,master ping3次(zen discovery默认ping失败重试3次)不通后就会把该节点剔除出集群,从而导致索引进行重新分配. (1)优化gc,减少gc时间. (2)调大zen discovery的重试次数(es参数:ping_retries)和超时时间(es参数:ping_timeout).

Elasticsearch as Database - taowen - SegmentFault

- -
【北京上地】滴滴出行基础平台部招聘 Elasticsearch 与 Mysql binlog databus 开发工程师. 内推简历投递给: [email protected]. 推销Elasticsearch. 时间序列数据库的秘密(1)—— 介绍. 时间序列数据库的秘密(2)——索引.

es的mapping设置 - 一只自由自在的鱼 - 博客园

- -
 自定义mapping的api. #mappings关键字. mapping中字段类型一旦设定后 禁止直接修改. 因为lucene实现的倒排索引生成后不允许修改. 除非重建索引映射,然后做reindex操作. 1,POST _reindex { "source": {"index":"旧索引"}, "dest": {"index":"备份索引"} } 2,删除旧索引 3,新索引建立mapping 4,POST _reindex { "source": {"index":"备份索引"}, "dest": {"index":"新索引"} }.

数仓建模—ID Mapping - 大数据技术派 - 博客园

- -
早晨起床的时候,发现自己尿分叉,我没有多想,简单洗洗就匆忙出门. 路过早餐店,我看到师傅熟练的拉扯一小块面团,拉至细长条,然后放入油锅中,不一会功夫,一根屎黄色的油条便出锅了,卖相不错. 我在想,小到炸屎黄色的油条,大到学习,其实都是一个熟能生巧的过程. 数据仓库系列文章(持续更新). 数仓—ID Mapping.