• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程技巧 > Elasticsearch如何更新mapping

Elasticsearch如何更新mapping

作者:阳小猿的博客 字体:[增加 减小] 来源:互联网 时间:2017-08-28

阳小猿的博客通过本文主要向大家介绍了elasticsearch等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

基本思路

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

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

参数说明

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

操作步骤

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

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

      {
          "actions": [
              { "add" : { "index" : "test_v1", "alias" : "test" } }
          ]
      }
  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

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

      {
          "source": {
              "index": "test_v1"
          },
          "dest": {
              "index": "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
    • Method: DELETE
    • Url: http://localhost:9200/test_v1

小结

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

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-12git提交空目录的方法
  • 2017-05-12Unicode编码大揭秘
  • 2017-05-12CSDN 博客的代码高亮问题自己修复
  • 2017-05-12XXencode 编码,XX编码介绍、XXencode编码转换原理与算法
  • 2017-05-12百度HI QQ和MSN 阿里旺旺贸易通MSN在线客服在线聊天代码
  • 2017-05-12在地址栏里显示logo的实现方法
  • 2017-05-12IE条件语句 IE hack大全
  • 2017-09-08nodejs学习 package.json 依赖包具体详解
  • 2017-05-12PHP VBS JS 函数 对照表
  • 2017-05-12phpMyAdmin“无法载入 mysql 扩展, 请检查 PHP 配置”问题的解决方案

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • windows 中 \r\n 区别于 类unix中的\n 疑问说明
    • 程序员学英语的一个方法
    • 深入理解浏览器的各种刷新规则
    • 使用git代替FTP部署代码到服务器的例子
    • 删除SVN三种方法delSvn(windows+linux)
    • 用户权限管理设计[图文说明]
    • 高性能WEB开发 图片压缩篇
    • 即时通讯软件在网页上启动临时对话的链接代码
    • 获取目录下所有文件名的代码
    • Kali渗透(一)----信息收集之域名(WHOIS)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有