Elasticsearch 篇之Mapping 设置

2019-06-27  本文已影响0人  青衣敖王侯

ElasticSearch之mapping设置
1.mapping类似数据库中的表结构定义,主要作用如下:
定义Index下的字段名
定义字段的类型,比如数值型、字符串型、布尔型
定义倒排索引相关的配置,比如是否索引、记录position等
API:curl -uelastic:changeme -XGET http://172.21.30.11:10200/_mapping或者curl -uelastic:changeme -XGET http://172.21.30.11:10200/test_index/_mapping?pretty

2.自定义mapping,其中mappings是关键词,doc是type名称,“text"是字段类型,properties下面是字段名称和类型定义:
curl -uelastic:changeme -XPUT http://172.21.30.11:10200/my_index -d '
{
"mappings":{
"doc":{
"dynamic":false,
"properties":{
"title":{
"type":"text"
},
"name":{
"type":"keyword"
},
"age":{
"type":"integer"
}
}
}
}
}'
Mapping中的字段类型一旦设定后,禁止直接修改,原因是Lucence实现的倒排索引生成后不允许修改,除非重新建立新的索引,然后做reindex操作。但是允许新增字段。通过dynamic参数来控制字段的新增:

2.1.copy_to

curl -uelastic:changeme -XPUT http://172.21.30.11:10200/my_index/doc/1?pretty -d '{
"first_name":"John",
"last_name":"Smith"
}'

curl -uelastic:changeme -XGET http://172.21.30.11:10200/my_index/_search?pretty -d '
{
"query":{
"match":{
"full_name":{
"query":"John Smith",
"operator":"and"
}
}
}
}'

2.2 index
控制当前字段是否索引,默认为true,即记录索引,false不记录,即不可搜索.当身份证号和手机号这样的敏感信息被搜索的时候,可以设置为false,这样就可以不用建立倒排索引节省空间
curl -uelastic:changeme -XPUT http://172.21.30.11:10200/my_index -d '
{
"mappings":{
"doc":{
"properties":{
"cookie":{
"type":"text",
"index":"false"
}
}
}
}
}'

curl -uelastic:changeme -XPUT http://172.21.30.11:10200/my_index/doc/1?pretty -d '{
"cookie":"name=alfred"
}'

curl -uelastic:changeme -XGET http://172.21.30.11:10200/my_index/_search?pretty -d '
{
"query":{
"match":{
"cookie":"name"
}
}
}'

2.3index_options用于控制倒排索引记录的内容,有如下4中配置

3.数据类型
核心数据类型

4.dynamic Mapping
es可以自动识别文档字段类型,从而降低用户使用成本。es是依靠json文档的字段类型来实现自动识别字段类型,支持的类型有:
null:忽略
boolean:boolean
浮点类型:float
整数:long
object: object
array:由第一个非null值的类型决定
string: 匹配为日期则设为date类型(默认开启)匹配为数字的话设为float或long类型(默认关闭)设为text类型,并附带keyword的子字段

4.1日期的自动识别可以自行配置日期格式,以满足各种需求

curl -uelastic:changeme -XPUT http://172.21.30.11:10200/test_index/my_type/1?pretty -d '{
"create_date":"09/25/2015"
}'

curl -uelastic:changeme -XGET http://172.21.30.11:10200/test_index/_mapping?pretty

4.2字符串是数字时,默认不会自动识别为整型,因为字符串中出现数字时完全合理的

5.Dynamic Template
允许根据es自动识别的数据类型、字段名等来动态设定字段类型,可以实现如下效果:

匹配规则一般有如下几个参数:

6.自定义mapping的建议
自定义Mapping的操作步骤如下:
1.写入一条文档到es的临时索引中,获取es自动生成的mapping
2.修改步骤1得到的mapping,自定义相关配置
3.使用步骤2的mapping穿件实际所需索引

7.索引模板,英文为Index Template,主要用于在新建索引时自动应用预先设定的配置,简化索引创建的操作步骤

上一篇 下一篇

猜你喜欢

热点阅读