Elasticsearch映射Maping

Elasticsearch映射Maping

1.什么是映射
映射:创建索引的时候,可以预先定义字段的类型以及相关属性。
作用:这样会让索引建立的更加细致和完善。
分类:静态映射 和 动态映射

类型和es对应的类型:
String,VarChar, Text:string
Integer:integer
Long:long
Float:float
Double:double
Boolean:boolean
Date/Datetime:date
Bytes/Binary:binary

2.映射的属性方法
除了定义字段的类型,还可以给字段添加相关的属性。
属性01 :store
描述:值为yes或者no,设为yes就是存储,设为no就是不存储,默认值为no。
适应类型:all

属性02:index
描述:值为:analyzed,not_analyzed或者no
analyzed索引且分析
not_analyzed索引但是不分析
no不索引这个字段,这样就搜不到
默认值是analyzed
适用类型:string 其他类型只能设为no或者not_analyzed

属性03:null_value
描述:如果字段是空值,通过它可以设置一个默认值,比如“null_value”:“NA”
适用类型:all

属性04:boost
描述:设置字段的权值,默认是1.0
适用类型:all

属性05:index_analyzer
描述:设置一个索引时用的分析器
适用类型:all

属性06:search_analyzer
描述:设置一个搜索时用的分析器
适用类型:all

属性07:analyzer
描述:可以设置索引和搜索时的分析器,默认下elasticsearch使用的是standard分析器,除此之外,你还可以使用whitespace、simple或english这三种内置的分析器
适用类型:all

属性08:include_in_all
描述:默认下elasticsearch会为每一个文档定义一个特殊的域_all,他的作用就是每一个字段都将被搜索到,如果你搜索到,如果你不想让某个字段被搜索到,那么就在这字段里定义一个include_in_all=false;默认为true
适用类型:all

属性09:index_name
描述:定义字段的名称;默认值是字段本身的名字
适用类型:all

属性10:norms
描述:norms的作用是根据各种规范化因素去计算权值,这样方便查询;在analyzed定义字段里,值是true,not_analyzed是false
适用类型:all

3.动态映射
什么是动态映射?
文档中碰到一个以前没见过的字段时,动态映射可以自动的决定该字段的类型,并对该字段添加映射。
如何配置动态映射?
通过dynamic属性进行控制
true:默认值,动态添加字段;
false:忽略新字段;
strict:碰到陌生字段,抛出异常。
适用范围:
适用在根对象上或者object类型的任意字段上

#jianliyingshe建立映射
POST /library
{
  "settings":{
    "number_of_shards":5,
    "number_of_replicas":1
  },
  "mappings": {
    "books":{
      "properties":{
        "title":{"type":"string"},
        "name":{"type":"string","index":"not_analyzed"},
        "publish_date":{"type":"date","index":"not_analyzed"},
        "price":{"type":"double"},
        "number"{"type":"integer"}

      }
    }
  }
}

#dongtaiyingshe动态映射 
PUT /library
{
  "mappings": {
    "books":{
      "dynamic":"strict",
      "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
        }

      }
    }
  }
}

GET /library/

4.管理映射
获取映射信息
更新映射信息
删除映射信息

#获取某个索引的映射信息 
GET /library/_mapping

GET /bank/_mapping/_mapping/field

#获取某个索引下某个type的映射信息 
GET /library/_mapping/books

# 获取这个集群内所有的映射信息
GET /_all/_mapping

#获取这个集群内某两个或多个type的映射信息
GET /_all/_mapping/books,bank_account

#更新修改Mapping映射
#很遗憾,mapping一旦建立,就不能修改现有的字段映射
#如果要推倒现有的映射,必须重新建立一个索引,然后重新定义映射
#然后把之前索引里的数据导入到新建立的映射里
#--------具体的方法--------
#1.给现有的索引定义一个别名,并且把现有的索引指向这个别名,运行步骤2
#2.运行:PUT /现有索引/_alias/别名
#3.新创建一个索引,定义好最新的映射
#4.将别名指向新的索引,并且删除之前索引的执行,运行步骤5
#5.运行:
POST /_aliases
{
"actions":{
    {"remove":{"index":"现有索引名","alias":"别名A"}},
    {"add":{"index":"新建索引名","alias":"别名A"}}
  }
}

#注:通过这几个步骤就实现了索引的平滑过渡,并且是零停机的。

#删除映射
DELETE /library/books
DELETE /library/books/_mapping
DELETE /library/_mapping/books
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值