3.学习Elasticsearch索引映射的概念和使用

2023-08-18 12:56:15 浏览数 (1)

概念

索引映射(Index Mapping)是用来定义文档的数据结构和字段类型的过程。它类似于数据库中的表结构定义,为每个字段指定数据类型、分析器和其他属性。索引映射在创建索引时指定,也可以在索引已经存在的情况下进行更新。

目的

索引映射的目的是告诉 Elasticsearch 如何解析和处理文档中的字段数据,以便它能够正确地进行搜索、聚合和排序等操作。如果不定义映射,Elasticsearch 会尝试自动推断字段类型,但这可能会导致意外的结果和不必要的资源浪费。

映射的内容

  • 字段类型(Field Type):指定字段的数据类型,如文本、数字、日期、布尔值等。
  • 分析器(Analyzer):用于处理文本字段的分析器。分析器负责将文本拆分成词项(Terms),以便进行全文搜索。
  • 是否索引(Indexing):指定字段是否应该被索引,允许字段进行搜索。对于某些字段,可能不需要索引,例如用于存储大量纯文本数据的字段。
  • 是否存储(Stored):指定字段是否应该被存储在索引中。存储字段可以在检索结果中返回原始值,但会增加索引的存储空间。
  • 动态映射(Dynamic Mapping):允许 Elasticsearch 自动推断未在映射中定义的字段的数据类型。
  • 嵌套对象(Nested Object):允许在文档中嵌套其他文档或对象。
  • 复杂字段类型(Complex Field Types):如数组、对象和地理位置等。

简单使用

在dev tools执行如下代码将会创建一个索引并设置了静态mapping

创建索引与mapping

代码语言:javascript复制
PUT lglbc_demo
{
  "settings": {
    "number_of_replicas": 1,
    "number_of_shards": 3
  },
  "mappings": {
    "properties": {
      "userId":{
        "type": "text"
      },
      "stuNo":{
        "type": "integer"
      }
    }
  }
}

获取mapping

代码语言:javascript复制
get lglbc_demo/_mapping

返回结果

代码语言:javascript复制
{
  "lglbc_demo": {
    "mappings": {
      "properties": {
        "stuNo": {
          "type": "integer"
        },
        "userId": {
          "type": "text"
        }
      }
    }
  }
}

0 人点赞