ES 映射
Elasticsearch Mapping
Elasticsearch 为其用户提供了一种映射机制。它允许用户对文档及其字段执行映射。映射是索引或存储数据库中的文档和字段的过程。它定义了文档及其字段的存储和索引方式。
我们可以为不同类型的字段定义数据类型,例如-字符串、数字、geo_point 等。因此,要将数字字段视为数字,字符串字段作为全文或精确值字符串,日期字段作为日期,Elasticsearch 需要知道每个字段的数据类型。此信息存储在映射中。下面是一些关于映射需要注意的要点:
映射允许我们定义字段的数据类型,例如名称字段的字符串数据类型。
它指定文档中提供的字段的格式。
映射还用于配置与类型关联的元数据。
下面的例子将向您展示一个简单映射的演示,其中我们将创建一个名为books with mapping的索引-
复制代码
POST http://localhost:9200/books/_docs
{
"mappings": {
"type1": {
"_source": {
"enabled": false
},
"properties": {
"book_name": {"type":"string"},
"author_name": {"type":"string"},
"price": {"type":"float"},
"publisher": {"type":"string"},
"published_date": {"type":"date"}
}
}
}
}
回复
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "books"
}
屏幕截图
数据类型
Elasticsearch 支持不同字段的各种数据类型。让我们简要讨论每种数据类型:
核心数据类型: 这些是广泛使用的基本数据类型。一些核心数据类型是-short、integer、long、float、double、string、byte、Boolean 和 date。大多数系统都支持这些数据类型。
复杂数据类型: 复杂数据类型是用户定义的数据类型,它是核心数据类型的集合。复杂的数据类型是-数组、JSON 对象(本质上是分层的)和嵌套数据类型。
Geo 数据类型: Geo 数据类型是一种特殊的数据类型,用于存储地理详细信息,例如地点的位置。例如-
geo_point 有助于识别经度和纬度。
geo_shape 有助于定义不同的几何形状,如矩形。
专用数据类型: 这些数据类型是专用数据类型,用于保存唯一的详细信息,例如 IP 地址、用于计算字符串中标记数量的 token_count 以及自动完成
映射类型
每个索引都有不止一种映射类型,这进一步将索引的文档划分为逻辑组或块。
映射可能因字段和元字段等某些因素而彼此不同。
字段或属性: 字段也被视为属性。在 elasticsearch 中,不同的映射具有不同数据类型的各种字段。在索引中,名称相同但映射类型不同的字段必须具有相同的映射。
元字段: 元字段使有关映射以及其他对象的信息可用与它相关联,例如 _index、_id、_source 和 _type 字段。他们负责自定义如何处理与文档关联的元数据。
动态映射:
Elasticsearch 提供了一种自动创建映射的机制。这种用户友好的机制称为动态映射。它允许用户将数据直接发布到任何未定义的映射。然后 Elasticsearch 会自动为其创建映射。
静态映射:
在大多数情况下,我们已经知道保存在文档中的数据类型。因此,每当我们创建索引时,定义字段及其类型就变得容易了。这种机制称为静态映射,由用户在创建索引时创建。
映射参数
映射参数是定义映射的基本和基本因素。它们还有助于存储数据的关键——字段和存储。映射参数负责在搜索时如何分析这些细节。在 Elasticsearch 中,以下是映射参数-
analyzer
boost
coerce
copy_to
doc_values
dynamic
enabled
fields
fielddata
format
geohash
geohash_prefix
geohash_precision
ignore_above
ignore_malformed
include_in_all
Index_options
lat_lon
norms
null_value
position_increment_gap
properties
search_analyzer
similarity
store
team_vector
获取索引的映射细节
以下命令用于获取与索引关联的映射-
复制代码
GET http://localhost:9200/student1/
_mapping?include_type_name=false
响应
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
"student": {
"mappings": {
"properties": {
"Addmission_year": {
"type":"text",
"fields": {
"keyword": {
"type": "keyword"
"ignore_above": 256
}
}
},
"country": {
"type":"text",
"fields": {
"keyword": {
"type": "keyword"
"ignore_above": 256
}
}
},
"course": {
"type":"text",
"fields": {
"keyword": {
"type": "keyword"
"ignore_above": 256
}
}
},
"email": {
"type":"text",
"fields": {
"keyword": {
"type": "keyword"
"ignore_above": 256
}
}
},
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
截图
移除映射类型
Elasticsearch 7.0.0 及更高版本不支持索引的 _default_ 映射。但是,在 Elasticsearch 6.x 中创建的索引将继续像以前一样工作。 Elasticsearch 7.0 版本的 API 中不推荐使用类型。