首页 > 数据库 >ElasticSearch 如何增加相当于MySql 中的一列字段

ElasticSearch 如何增加相当于MySql 中的一列字段

时间:2024-07-04 20:08:39浏览次数:18  
标签:index 映射 mapping 索引 ElasticSearch 一列 MySql Elasticsearch my

在Elasticsearch中,增加相当于MySQL中的一列字段的操作被称为“添加字段到索引映射”。与MySQL不同,Elasticsearch是一个文档存储引擎,使用索引和类型来组织数据。每个文档都有其特定的映射(mapping),定义了字段及其数据类型。

增加字段到Elasticsearch映射的步骤

  1. 查看当前映射
    首先,查看当前索引的映射以了解现有字段和结构。

    GET /<index_name>/_mapping
    
  2. 更新映射
    使用_mapping API添加新的字段。请注意,Elasticsearch 7.0以后,一个索引只能有一个类型,所以不需要指定类型。

    PUT /<index_name>/_mapping
    {
      "properties": {
        "new_field_name": {
          "type": "type_of_new_field"
        }
      }
    }
    
  3. 重新索引(如果必要):
    如果需要将现有文档的数据迁移到新的结构中,可能需要重新索引。重新索引意味着创建一个新的索引并将数据从旧索引复制到新索引。

示例操作

假设我们有一个索引my_index,需要增加一个字段age,其数据类型为integer

  1. 查看当前映射

    GET /my_index/_mapping
    
  2. 更新映射

    PUT /my_index/_mapping
    {
      "properties": {
        "age": {
          "type": "integer"
        }
      }
    }
    
  3. 重新索引(如果必要):

    如果现有文档需要更新以包含新字段,可以使用以下步骤进行重新索引:

    POST /_reindex
    {
      "source": {
        "index": "my_index"
      },
      "dest": {
        "index": "my_index_v2"
      }
    }
    

    上述操作会将my_index中的所有文档复制到新索引my_index_v2

  4. 删除旧索引并重命名新索引(可选):

    如果重新索引成功,并且希望新索引替代旧索引,可以删除旧索引并将新索引重命名:

    DELETE /my_index
    
    POST /my_index_v2/_aliases
    {
      "actions": [
        { "remove": { "index": "my_index_v2", "alias": "my_index" } },
        { "add": { "index": "my_index_v2", "alias": "my_index" } }
      ]
    }
    

注意事项

  • 动态映射
    在Elasticsearch中,如果未显式定义字段,默认情况下会自动添加新的字段并分配类型。这称为动态映射。可以在创建索引时禁用动态映射,以避免意外的字段添加:

    PUT /my_index
    {
      "mappings": {
        "dynamic": "strict",
        "properties": {
          // existing properties
        }
      }
    }
    
  • 兼容性
    如果在集群中添加新字段,确保客户端代码处理新字段的逻辑是兼容的。

通过这些步骤,可以在Elasticsearch中实现类似于在MySQL中添加列的操作。不过,Elasticsearch的架构和操作方式与传统关系型数据库不同,具体操作要根据实际需求进行调整。

标签:index,映射,mapping,索引,ElasticSearch,一列,MySql,Elasticsearch,my
From: https://www.cnblogs.com/gongchengship/p/18284589

相关文章

  • MySQL的事务默认隔离级别是什么
    MySQL的默认隔离级别是REPEATABLEREAD。隔离级别概述数据库的隔离级别决定了事务相互隔离的程度,从而影响到并发事务的行为。SQL标准定义了四种隔离级别:READUNCOMMITTED(未提交读)READCOMMITTED(提交读)REPEATABLEREAD(可重复读)SERIALIZABLE(可串行化)每种隔离级别解决不......
  • mysql主从复制
    一、主从复制通过主从复制,可以实现读写分离。1.什么是主从复制MySQL主从复制是一种数据库复制技术,用于将一个MySQL数据库服务器的更改同步到其他MySQL数据库服务器。在主从复制中,有一个主数据库(Master)和一个或多个从数据库(Slave)。主数据库负责接收和处理所有的写操作,而从数据......
  • SAAS下一个mysql实例多个租户的库
    在多租户环境中,根据tenantCode字段动态切换数据库是常见的需求。这里将展示如何在SpringBoot和MyBatis项目中实现这一功能,具体步骤包括配置数据源、定义数据源路由逻辑以及在业务代码中使用。1.配置数据源首先,你需要为你的应用配置一个主数据源,这个数据源将被用于连接到包含所......
  • Windows 安装DBeaver,并使用DBeaver进行数据库的操作(达梦数据库、MySQL数据库等)
    安装DBeaver可视化工具安装前准备准备环境JDK17DBeaver安装包达梦数据库驱动DBeaver代理包开始安装MySQL连接&操作MySQL连接操作达梦数据库连接&操作达梦数据库驱动DBeaver加载达梦数据库驱动达梦数据库连接操作免责声明安装前准备准备环境JDK17安装地址(官......
  • django models对应的mysql类型
    Django模型字段类型与MySQL数据库类型的对应关系如下:Django模型字段类型MySQL数据库类型AutoFieldBIGINTUNSIGNEDCharFieldVARCHARIntegerFieldINTDecimalFieldDECIMALDateFieldDATEDateTimeFieldDATETIMEFileField,ImageFieldVARCHAR(用于文件路径)BooleanFieldBOOL(如......
  • MySQL单表千万级数据查询优化大家怎么说(评论有亮点)
    题图来自APOD上次写了一篇MySQL优化实战的文章“MySQL千万级数据从190秒优化到1秒全过程”。这篇文章主要还是在实战MySQL优化,所以从造数据到查询SQL优化SQL都没有业务或者其它依赖,优化的技巧也不涉及软件架构就是纯SQL优化。由于笔者经验有限和篇幅限制没有展开讲很多细节,其......
  • mysql日志
    日志类型查询日志日志类型描述查询文件开启方式一般查询日志记录服务器接收到的每一个查询或是命令,无论这些查询或是命令是否正确甚至是否包含语法错误,generallog都会将其记录下来SHOWVARIABLESLIKE'general_log_file';SETGLOBALgeneral_log='ON';慢......
  • MySQL—常用的数据类型
    数据类型整型1.创建一个含有无符号/有符号整型的字段的表CREATETABLEL1( idtinyintunsigned#无符号)CREATETABLEL2( idtinyint#默认为有符号)数值型(bit)2.数值型(bit)的使用小数3.数值型(小数)的基本使用 字符串4.字符串的基本使用#演示字符......
  • MySQL5.7.x绿色版安装过程
    MySQL5.7.x绿色版安装过程记一下自己安装MySQL的过程,方便以后用官网下载MySQL5.7.x绿色版压缩包我这里使用的是mysql-5.7.42-winx64.zip解压,并配置环境变量(可选)环境变量要配置到MySQL目录下的bin目录例如:C:\DevelopmentTools\mysql-5.7.42-winx64\bin在MySQL目录......
  • MySQL中的可插拔身份验证(Pluggable Authentication)(二)
    PluggableAuthentication(PAM,即可插拔式认证模块)是一种高效且灵活的用户级别的认证方式,广泛应用于现代操作系统,特别是Linux服务器中。它允许数据库管理员(DBAs)为MySQL用户帐户选择和更改不同的认证方法。1身份验证插件客户端/服务器兼容性可插拔身份验证使MySQL帐户在选择身......