es创建索引设置字段不分词_【elasticsearch入门】elasticsearch索引的mapping及其设置...

mapping 顾名思义,代表了映射关系。是文档中字段和数据类型的映射关系

为什么要了解mapping

虽然elasticsearch中已尽有的动态mapping(Dynamic Mapping),而且新增字段默认也会添加新的mapping,但是毕竟是机器,有时会推算的不对,比如地理位置信息,特殊格式化的日期类型等。这时,如果需要es提供排序、聚合等查询功能,就不能满足我们的需求。

什么是mapping

通过手动设置mapping,我们可以

定义文档里字段的数据类型

定义字段的名称

定义对应字段的是否索引

定义对应字段的分词方式

mapping会把JSON文档文档映射成Lucene所需要的扁平格式

一个mapping属于一个索引的type

每个文档都属于一个Type

一个type又一个mapping定义

7.0开始,不需要在mapping定义中指定type信息,因为默认每个索引只有一个type叫"_doc"

查询mapping

#GET 索引名/_mapping

GET mapping_test/_mapping

设置mapping

PUT users

{

"mappings" : {

"properties" : {

"firstName" : {

"type" : "text",//text类型全文搜索

"fields" : {

"keyword" : {

"type" : "keyword",//keyword支持聚合查询

"ignore_above" : 256

}

}

},

"lastName" : {

"type" : "keyword",

"null_value": "NULL"//支持字段为null,只有keyword类型支持

},

"mobile" : {

"type" : "text",

"index": false//此字段不被索引

},

"address":{

"type":"text",

"index_options":"offsets"//控制倒排索引记录的内容。offsets最多,记录四个

}

}

}

}

Dynamic Mapping

什么是动态mapping

在写入文档时,如果索引不存在,会自动创建索引,字段类型的自动识别如下:

JSON类型

Elastic search类型

你可能感兴趣的:(es创建索引设置字段不分词)