mapping映射管理

映射(mapping)

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

elasticsearch会根据JSON源数据的基础类型猜测你想要的字段映射。将输入的数据转变成可搜索的索引项。mapping就是我们自己定义的字段的数据类型,同时告诉elasticsearch如何索引数据以及是否可以被搜索。

作用:会让搜索建立的更加细致和完善
类型:静态映射和动态映射

内置类型

string 类型:text,keyword(string类型在es5开始已经被废弃)
数字类型:long,integer,short,byte,double,float
日期类型:date
bool类型:boolean
binary类型:binary
复杂类型:object,nested
geo类型:geo-point,geo-shape
专业类型:ip,competion

text与keyword的区别:
这两个字段都可以存储字符串使用,但建立索引和搜索的时候是不太一样的;

  • keyword:Keyword
    数据类型用来建立电子邮箱地址、姓名、邮政编码和标签等数据,不需要进行分词。可以被用来检索过滤、排序和聚合。keyword
    类型字段只能用本身来进行检索。
  • text:存储数据时候,会自动分词,并生成索引(这是很智能的,但在有些字段里面是没用的,所以对于有些字段使用text则浪费了空间);会将大写字母转化成小写字母再进行解析。

注意,如果不像以上通过mapping 配置索引时,遇到字符串类型时候的字端,系统会默认为“text”类型。

属性

store:值为true表示存储,false表示不存储,默认为false;
index:值为true表示分析,false表示不分析,默认为true,只适用于string类型;
null_value:如果字段为空,可以设置一个默认值,比如“NA”;
analyzer:可以设置索引和搜索时用的分析器,默认使用的是standard分析器,还可以使用其他插件的;
include_in_all:默认es为每个文档定义一个特殊域_all,它的作用是让每个字段被搜索到,如果不想某个字段被搜索到,可以设置为false;
format:事件格式字符串的模式,只适用于date类型。

mapping索引中创建完成某一数据类型,就不能在原有的基础上修改了。
可以通过删除原来的索引,新建的方式来修改。

#创建索引test3
PUT test3
{
"mappings":{
"job":{
"properties":{
"title":{
"type":"text"
},
"salary_min":{
"type":"integer"
},
"city":{
"type":"keyword"
},
"company":{
"properties":{
"name":{
"type":"text"
},
"company_addr":{
"type":"text"
},
"employee_count":{
"type":"integer"
}
}
},
"publish_date":{
"type":"date",
"format":"yyyy-MM-dd"
},
"comments":{
"type":"integer"
}
}
}
}
}

#插入数据
PUT test3/job/1
{
"title":"pythondadada",
"salary_min":15000,
"city":"beijing",
"company":{
"name":"baidu",
"company_addr":"beijingruanjianyuan",
"employee_count":50
},
"publish_date":"2017-4-18",
"comments":15
}

#获取指定的_type数据,例如job
GET test3/_mapping/job
GET _all /_mapping/job

猜你喜欢

转载自blog.csdn.net/weixin_43933037/article/details/86082069