Elasticsearch教程

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 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 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 Mapping

移除映射类型

Elasticsearch 7.0.0 及更高版本不支持索引的 _default_ 映射。但是,在 Elasticsearch 6.x 中创建的索引将继续像以前一样工作。 Elasticsearch 7.0 版本的 API 中不推荐使用类型。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4