19-十九、Elasticsearch 教程: 映射 ( Mapping )
索引中每个文档都有一个类型( type
) 。 每个类型拥有自己的映射 ( mapping
)或者模式定义 (schema
definition
)
一个映射定义了字段类型,每个字段的数据类型,以及字段被 Elasticsearh
处理的方式。映射还用于设置关联到类型上的元数据
所以,从某些方面说,映射是存储在索引中的文档的大纲,或者说相当于数据库中的某个表的表结构
范例
例如下面这个请求,用于定义银行账户详情
POST http://localhost:9200/bankaccountdetails?pretty
请求正文
{
"mappings":{
"report":{
"properties":{
"name":{ "type":"text"},
"date":{ "type":"date"},
"balance":{ "type":"double"},
"liability":{ "type":"double"}
}
}
}
}
返回响应如下
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "bankaccountdetails"
}
字段类型
Elasticsearch
为文档中的字段提供了大量的数据类型支持。以下列出的数据类型都可以用来定义文档的字段类型
1、基础数据类型
Elasticsearch
几乎支持所有系统的基本数据类型
- 整型 (
integer
) - 长整型 (
long
int
) - 双精度型 (
double
) - 短整型 (
short
int
) - 字节型 (
byte
) - 浮点型 (
float
) - 字符串型 (
string
) - 日期类型 (
date
) - 布尔类型 (
boolean
) - 二进制类型 (
binary
)
2、复合数据类型
复合数据类型一般由一种或多种数据类型组合而成,比如数据、JSON
对象和嵌套数据类型。
下面的请求的请求正文和响应正文就是一个嵌套数据类型的
POST http://localhost:9200/tabletennis/team/1?pretty
请求正文
{
"group" : "players",
"user" : [
{
"first" : "dave", "last" : "jones"
},
{
"first" : "kevin", "last" : "morris"
}
]
}
响应正文
{
"_index" : "tabletennis",
"_type" : "team",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
3、Geo
数据类型
Geo
数据类型用于定义一个地理位置信息
例如
数据类型 | 说明 |
---|---|
geo_point | 用于定义经度和纬度 |
geo_shape | 用于定义矩形等不同的几何形状 |
4、特殊的数据类型
特殊的字段类型是指那些由特殊用途的数据类型
例如,IPv4("ip")
接受一个 IP 4
的地址
例如,自动完成数据类型用于支持自动完成或输入建议
例如,token_count
用于统计字符串中的令牌数量
类型映射
每个索引都会映射到一个或多个类型,这样就可以在逻辑上将索引的文档细分成一个个小的组成部分
如果传递的参数不同,那么映射类型也可以彼此不同
1、元字段 ( Meta-Fields
)
这些字段提供了映射和与该字段有关的其它对象的信息
例如
_index
_type
_id
_source
2、普通字段 ( Fields
)
不同的映射可以含有不同数量的字段,且字段的类型也可以各不相同
动态映射
Elasticsearch
提供了一个用户友好的自动创建映射机制
用户可以将数据直接发布到任何未预先定义的映射中,Elasticsearch
将自动创建映射
这种机制,称为动态映射
范例
例如下面的请求
POST http://localhost:9200/accountdetails/tansferreport
请求正文
{
"from_acc":"7056443341", "to_acc":"7032460534",
"date":"6/28/2019", "amount":10000
}
响应内容
{
"_index" : "accountdetails",
"_type" : "tansferreport",
"_id" : "6EnaRmQBwP8hfMtC_uoj",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
映射参数
映射参数定义了映射的结构、字段的信息、存储的信息以及搜索时将如何分析映射的数据
下面列出了 Elasticsearch
支持的所有映射参数
、analyzer
、boost
、coerce
、copy\_to
、doc\_values
、dynamic
、enabled
、fielddata
、geohash
、geohash\_precision
、geohash\_prefix
、format
、ignore\_above
、ignore\_malformed
、include\_in\_all
、index\_options
、lat\_lon
、index
、fields
、norms
、null\_value
、position\_increment\_gap
、properties
、search\_analyzer
、similarity
、store
、term\_vector
希望读者能够给小编留言,也可以点击[此处扫下面二维码关注微信公众号](https://www.ycbbs.vip/?p=28 "此处扫下面二维码关注微信公众号")
看完两件小事
如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:
- 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
- 关注公众号 「方志朋」,公众号后台回复「666」 免费领取我精心整理的进阶资源教程
本文著作权归作者所有,如若转载,请注明出处
转载请注明:文章转载自「 Java极客技术学习 」https://www.javajike.com