Elasticsearch 映射

17 Mar 2025 | 4 分钟阅读

Elasticsearch 为其用户提供了一种映射机制。它允许用户对文档及其字段执行映射。 映射是在数据库中索引或存储文档和字段的过程。 它定义了如何存储和索引文档及其字段。

我们可以为不同类型的字段定义数据类型,例如 - 字符串、数字、geo_point 等。因此,为了将数字字段视为数字,将字符串字段视为全文或精确值字符串,并将日期字段视为日期,Elasticsearch 需要知道每个字段的数据类型。此信息存储在映射中。以下是关于映射需要注意的一些重要点:

  • 映射允许我们为字段定义数据类型,例如,name 字段的字符串数据类型。
  • 它指定文档中提供的字段的格式。
  • 映射还用于配置与类型关联的元数据。

以下示例将向您展示一个简单映射的演示,我们将创建一个名为 books 的索引并进行映射 -

复制代码

响应

截图

Elasticsearch Mapping

数据类型

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
  • 动态的
  • enabled
  • fielddata
  • 格式
  • 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

获取索引的映射详细信息

以下命令用于获取与索引关联的映射 -

复制代码

响应

截图

Elasticsearch Mapping

删除映射类型

Elasticsearch 7.0.0 及更高版本不支持索引的 _default_ 映射。 但是,在 Elasticsearch 6.x 中创建的索引将继续像以前一样工作。 类型在 Elasticsearch 7.0 版本的 API 中已弃用。