ES文档映射

2022-03-07 13:21:22 浏览数 (1)

13.文档映射

ES中映射可以分为动态映射和静态映射

1.动态映射

在关系数据库中,需要事先创建数据库,然后在该数据库下创建数据表,并创建表字段、类型、长度、主键等,最后才能基于表插入数据。而Elasticsearch中不需要定义Mapping映射(即关系型数据库的表、字段等),在文档写入Elasticsearch时,会根据文档字段自动识别类型,这种机制称之为动态映射。 动态映射规则如下:

1 动态映射
1.1 删除原创建的索引
代码语言:javascript复制
DELETE /es_db
1.2 创建索引
代码语言:javascript复制
PUT /es_db
1.3 创建文档(ES根据数据类型, 会自动创建映射)
代码语言:javascript复制
PUT /es_db/_doc/1
{
"name": "Jack",
"sex": 1,
"age": 25,
"book": "java精通",
"address": "广州"
}
1.4 获取文档映射
代码语言:javascript复制
GET /es_db/_mapping        

2.静态映射

静态映射是在Elasticsearch中也可以事先定义好映射,包含文档的各字段类型、分词器等,这种方式称之为静态映射。

2.1 删除原创建的索引
代码语言:javascript复制
DELETE /es_db
2.2 创建索引
代码语言:javascript复制
PUT /es_db
2.3 设置文档映射
代码语言:javascript复制
PUT /es_db
{
"mappings":{
"properties":{
"name":{"type":"keyword","index":true,"store":true},
"sex":{"type":"integer","index":true,"store":true},
"age":{"type":"integer","index":true,"store":true},
"book":{"type":"text","index":true,"store":true},
"address":{"type":"text","index":true,"store":true}
}
}
}
2.4 根据静态映射创建文档
代码语言:javascript复制
PUT /es_db/_doc/1
{
"name": "Jack",
"sex": 1,
"age": 25,
"book": "elasticSearch入门至精通",
"address": "广州车陂"
}
2.5 获取文档映射
代码语言:javascript复制
GET /es_db/_mapping            

14.核心类型(Core datatype)

字符串:string,string类型包含 text 和 keyword。 text:该类型被用来索引长文本,在创建索引前会将这些文本进行分词,转化为词的组合,建立索引;允许es来检索这些词,text类型不能用来排序和聚合。 keyword:该类型不能分词,可以被用来检索过滤、排序和聚合,keyword类型不可用text进行分词模糊检索。 数值型:long、integer、short、byte、double、float 日期型:date 布尔型:boolean

15.keyword 与 text 映射类型的区别

将 book 字段设置为 keyword 映射 (只能精准查询, 不能分词查询,能聚合、排序)

代码语言:javascript复制
POST /es_db/_doc/_search
{
"query": {
"term": {
"book": "elasticSearch入门至精通"
}
}
}

将 book 字段设置为 text 映射能模糊查询, 能分词查询,不能聚合、排序)

代码语言:javascript复制
POST /es_db/_doc/_search
{ 
"query": {
"match": {
"book": "elasticSearch入门至精通"
}
}
}

0 人点赞