美文网首页Elasticsearch
Elasticsearch 如何做映射mapping

Elasticsearch 如何做映射mapping

作者: 菜花_Q | 来源:发表于2018-04-24 06:29 被阅读114次

    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

    相关文章

      网友评论

        本文标题:Elasticsearch 如何做映射mapping

        本文链接:https://www.haomeiwen.com/subject/stillftx.html