Elasticsearch 入门教程 – mapping映射

什么是映射

  • 为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成全文本(Full-text)或精确(Exact-value)的字符串值,Elasticsearch需要知道每个字段里面都包含什么数据类型。这些类型和字段的信息存储在映射中

  • 创建索引的时候,可以预先定义字段的类型以及相关属性,相当于定义数据库字段的属性

映射的分类

静态映射

动态映射

什么是动态映射

文档中碰到一个以前没见过的字段时,动态映射可以自动决定该字段的类型,并对该字段添加映射

如何配置动态映射

  1. 通过dynamic属性进行控制

  2. true:默认值,动态添加字段; false:忽略新字段; strict:碰到陌生字段,抛出异常

适用范围

适用在根对象上或者object类型的任意字段上

字段类型

string字符串
integer数字
longA long value(64bit)
floatA floating-point number(32bit):such as 1,2,3,4
doubleA floating-poing number(64bit)
boolA bool value,such as True,False
datesuch as:2017-02-20
binary二进制

创建映射

创建映射

POST /library                  #给索引为library创建映射关系

{

    "settings":{

    "number_of_shards" 5,

    "number_of_replicas" 1

},

     "mappings":{

      "books":{          #索引为library的type类型为books

        "properties":{        #这里往下就是映射关系

            "title":{"type":"string"},

             "name":{"type":"string","index":"not_analyzed"},

            "publish_date":{"type":"date","index":"not_analyzed"},

            "price":{"type":"double"},

            "number":{

                "type":"object",

                "dynamic":true

    }

        }

     }

     }

}

获取映射

获取index为library的映射

GET library/_mapping

{

   "library": {

      "mappings": {

         "books": {

            "properties": {

               "name": {

                  "type""string",

                  "index""not_analyzed"

               },

               "number": {

                  "type""object",

                  "dynamic""true"

               },

               "price": {

                  "type""double"

               },

               "publish_date": {

                  "type""date",

                  "format""dateOptionalTime"

               },

               "title": {

                  "type""string"

               }

            }

         }

      }

   }

}

获取index为library,type为books的映射

GET /libraryyry/_mapping/books

获取集群内所有的映射信息

GET /_all/_mapping/

获取这个集群内某两个或多个type映射信息(books和bank_account映射信息)

GET /_all/_mapping/books,bank_account

删除映射

DELETE /libraryry/books

DELETE /libraryry/books/_mapping                #删除books的映射DELETE /libraryry/_mapping/books,bank_acount  #删除多个映射

无法修改已经存在的mapping映射

 

1.如果要推到现有的映射,你得重新建立一个索引.然后重新定义映射
2.然后把之前索引里的数据导入到新的索引里
-------具体方法------
    1.给现有的索引定义一个别名,并且把现有的索引指向这个别名,运行步骤2
    2.运行: PUT /现有索引/_alias/别名A
    3.新创建一个索引,定义好最新的映射
    4.将别名指向新的索引.并且取消之前索引的执行,运行步骤5
    5.运行:
注意:通过这几个步骤就实现了索引的平滑过渡,并且是零停机

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值