原创

elasticsearch映射相关字段定义,属性定义,及动态映射(marvel插件方式)mapping


1.什么是Mapping映射?

映射:创建索引的时候,可以预先定义字段的类型及相关属性

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

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

TypeES typeDescription
String,Varchar,Textstring文本类型
Integerinteger整型
Longlong长整型
Floatfloat浮点型
Doubledouble双精度浮点型
Booleanboolean布尔型
Date/Datetimedate日期类型
Bytes/Binarybinary字节型

2.映射的属性方法

除了定义字段的类型,还可以给字段添加相关的属性

属性描述适用类型
store值为:yes或者no,设为yes就是存储,no就是不存储,默认值是noall
index

值为:analyzed,not_analyzed或者no

analyzed索引且分析

not_analyzed索引但不分析

no 不索引这个字段,这样就搜索不到

默认值是analyzed

string(其他类型只能设置为no或not_analyzed)
null_value如果字段是空值,通过它可以设置一个默认值,比如“null_value”:"NA"all
boost设置字段的权值,默认值是1.0all
index_analyzer设置一个索引时用的分析器all
search_analyzer设置一个搜索时用的分析器all
analyzer可以设置索引和搜索时用的分析器,默认下elasticsearch使用的是standard分析器,除此之外,你还可以使用whitespace,simple,english这三种内置的分析器all
include_in_all默认下elasticsearch会为每一个文档定义一个特殊的域_all,它的作用就是每一个字段都将被搜索到,如果你不想让某个字段被搜索到,那么久在这字段里定义一个include_in_all=false,默认值是trueall
index_name定义字段的名称;默认值是字段本身的名字all
normsnorms的作用是根据各种规范化因素去计算权值,这样方便查询,在analyzed定义字段里,默认值是true,not_analyzed是falseall

3.动态映射

3.1什么是动态映射?

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

3.2如何配置动态映射?

通过dynamic属性进行控制

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

3.3使用范围?

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


案例:

1).建立映射

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"}
        
      }
    }
  }
}

2).动态映射

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}
        
      }
    }
  }
}

4. 管理映射

4.1获取映射信息

1)获取某个索引的映射信息

GET /library/_mapping

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

GET /library/_mapping/books

3)获取这个集群内所有的映射的信息

GET /_all/_mapping

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

GET /_all/_mapping/books,bank_account


4.2更新映射信息
更新修改mapping映射

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

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

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

方法步骤:

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

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

3)新创建一个索引,定义好最新的映射

4)将别名指向新的索引,并且取消之前索引的指向,运行步骤5

5)运行:

POST _aliases
{
  "actions": [
    {
      "remove": {
        "index": "现有索引名",
        "alias": "别名A"
      },
      "add": {
        "index": "新建索引名",
        "alias": "别名A"
      }
    }
  ]
}

4.3删除映射信息

3种方式供使用

DELETE /library/books

DELETE /library/books/_mapping

DELETE /library/_mapping/books,bank


正文到此结束
本文目录