目录
- 一、映射的概述
- 二、创建映射的示例
- 2.1、首先,创建索引
- 2.2、然后,再创建好的索引基础上,创建映射
- 2.3、映射属性说明
- 2.4、查看创建的映射
- 2.5、最后,创建文档
- 2.6、根据文档中name属性条件查询文档 理解映射示例
- 2.7、根据文档中sex属性条件查询文档 理解映射示例
- 2.8、根据文档中age属性条件查询文档 理解映射示例
一、映射的概述
- 有了索引库,等于有了数据库中的 database。
- 索引库(index)中的映射,类似于数据库(database)中的表结构(table)。
- 创建数据库表需要设置字段名称,类型,长度,约束等;索引库也一样,需要知道这个类型
下有哪些字段,每个字段有哪些约束信息,这就叫做映射(mapping)。
二、创建映射的示例
2.1、首先,创建索引
- 在 Postman 中,向 ES 服务器发 PUT 请求 :http://127.0.0.1:9200/student
- 请求后,服务器返回响应
2.2、然后,再创建好的索引基础上,创建映射
-
在 Postman 中,向 ES 服务器发 PUT 请求 :http://127.0.0.1:9200/student/ _mapping,请求体内容为:
{ "properties": { "name":{ "type": "text", "index": true }, "sex":{ "type": "keyword", "index": true }, "age":{ "type": "long", "index": false } } }
-
请求后,服务器返回响应
2.3、映射属性说明
- 映射属性说明列表
属性 解释 字段名 任意填写,下面指定许多属性,例如:title、subtitle、images、price type 类型,Elasticsearch 中支持的数据类型非常丰富,说几个关键的: String 类型,分两种(text:可分词;keyword:不可分词,数据会作为完整字段进行匹配) Numerical:数值类型,分两类(基本数据类型:long、integer、short、byte、double、float、half_float;浮点数的高精度类型:scaled_float) Date:日期类型 Array:数组类型 Object:对象 index 是否索引,默认为 true,也就是说你不进行任何配置,所有字段都会被索引。 true:字段会被索引,则可以用来进行搜索 false:字段不会被索引,不能用来搜索 index 是否将数据进行独立存储,默认为 false 原始的文本会存储在_source 里面,默认情况下其他提取出来的字段都不是独立存储 的,是从_source 里面提取出来的。当然你也可以独立的存储某个字段,只要设置 "store": true 即可,获取独立存储的字段要比从_source 中解析快得多,但是也会占用 更多的空间,所以要根据实际业务需求来设置。 analyzer 分词器,这里的 ik_max_word 即使用 ik 分词器
2.4、查看创建的映射
- 在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/ _mapping
- 请求后,服务器返回响应
2.5、最后,创建文档
-
在 Postman 中,向 ES 服务器发 PUT 请求 :http://127.0.0.1:9200/student/_doc/1,请求体内容为:
{ "name":"王五", "age":30, "sex":"男的" }
-
请求后,服务器返回响应
2.6、根据文档中name属性条件查询文档 理解映射示例
-
在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search,请求体内容为:
{ "query":{ "match":{ "name":"王" } } }
-
请求后,服务器返回响应
-
由上图输出结果可知:通过name=“王”,即可查出结果数据,说明创建映射时name属性设置的type值为text,具有分词效果。
2.7、根据文档中sex属性条件查询文档 理解映射示例
-
在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search,请求体内容为:
{ "query":{ "match":{ "sex":"男" } } }
-
请求后,服务器返回响应
-
由上图输出结果可知:通过sex=“男”,查出结果数据为空,说明创建映射时sex属性设置的type值为keyword,不具备分词效果。
2.8、根据文档中age属性条件查询文档 理解映射示例
-
在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search,请求体内容为:
{ "query":{ "match":{ "age":"30" } } }
-
请求后,服务器返回响应
-
由上图输出结果可知:通过age=“30”,查出结果报错,说明创建映射时age属性设置的index值为false,字段不会被索引,不能用来搜索。