Elasticsearch 如何做映射mapping

一个集群,可以建多个索引,每个索引又有多个类型,每个类型有自己的mapping。

转自:https://blog.csdn.net/zhousenshan/article/details/82928827

1、什么是映射

    映射:创建索引的时候,可以预先定义字段的类型以及相关属性(比如说让某字段是否存储、用那种分析器、重要级别)

Elasticsearch可定义的字段类型

    作用:这样会让索引建立的更加的细致和完善!

    分类:静态映射和动态映射

2、映射的属性方法

    除了定义字段的类型、还可以给字段添加相关的属性。通过定义这些属性,可以让字段更加高级、特殊性

字段可添加的属性

特殊讲解:

    analyzer :

        standard:支持多数欧洲语言

        whitespace:基于空格进行分词

        simple:基于非字母字符进行分词,同时还能转化为小写字母

        english:对英文进行分词

 

3、动态映射

什么是动态映射?

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

如何配置动态映射?

    通过dynamic属性进行控制

        true:默认值,动态添加字段;

        false:忽略新字段;

        strict:碰到陌生字段,抛出异常。

适用范围

    适用在根对象上(根对象是啥?)或者object类型的任意字段上

#建立映射

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":"double"},

                "number":{"type": "integer"}

            }

        }

    }

}

GET /library/

#动态映射

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

#获取某个索引下某个type的映射信息

GET  /library/_mapping/books

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

GET /_all/_mapping

#获取这个集群内某两个或多个type的映射信息

GET /_all/_mapping/books,bank_account

    更新映射信息

#更新修改mapping映射

#很遗憾,mapping一旦建立,就不能修改现有的字段映射

#如果要推倒现有的映射,你得重新建立一个索引,然后重新定义映射

#然后把之前索引里的数据导入到新建立的索引里

#======具体的方法=========

#1、给现有的索引定义一个别名,并且把现有的索引指向这个别名,运行步骤2;

#2、运行: PUT /现有索引/_alias/别名A

#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

DELETE /library/_mapping/books,bank

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值