Skip to main content
 首页 » 编程设计

介绍Elasticsearch Mapping

2022年07月19日135zhwl

介绍Elasticsearch Mapping

概述

映射是定义文档及其包含字段如何存储和索引的过程。如我们使用关系型数据库,使用之前需要定义数据库和表以及表字段类型、索引以及约束等。我们可以把Elasticsearch中索引类比为SQL的数据库,文档对应表记录,那么映射可以理解为表的定义过程。

映射类型

每个索引都有映射类型用于决定文档如何被索引。映射类型包括:

举例,映射定义:

  • 字符串字段应该定义为全文字段,用于全文检索。
  • 定义字段为数值、日期或地理位置
  • 日期值格式定义

字段数据类型

字段的数据包括:

  • 简单类型包括 text, keyword, date, long, double, boolean 和 ip。
  • 支持JSON层次结构的类型,如object或nested。
  • 特定类型,如geo_point, geo_shape, completion(实现自动完成特性)。

为不同目的、以不同方式索引同一字段通常很有用。举例,字符串字段可以定义为text类型实现全文检索,也可以定义为keyword类型实现排序或聚集。或者,索引字符串姿势使用不同的分线器,如: standard 分析器, english 分析器, french 分析器。
可以通过多字段达到目的,大多数数据类型通过fields参数支持多字段。

动态映射

字段和映射类型在使用之前不是必须要定义的。因为Elasticsearch支持动态映射,当索引文档时新字段名称会自动增加。新字段可以被增加到顶级映射类型,也可以在object和nested字段中。

动态映射规则可以配置,用于映射新的字段。

显示映射

你比Elasticsearch更了解你的数据,所以动态映射用途有限,有时你需要显示指定自己的映射规则。可以通过创建索引时创建字段映射,也可以通过put mapping api 给已存在索引中增加字段。

更新映射

针对已有文档的字段映射不能更新。改变映射意味着已索引的文档无效。可以通过新的映射创建新的索引,然后重新索引数据。如果仅想重命名字段而不改变映射,可以通过alias字段实现。

示例应用

在创建索引时可以指定映射,示例代码如下:

PUT my_index ① 
{ 
  "mappings": { 
    "properties": { ② 
      "title":    { "type": "text"  }, ③ 
      "name":     { "type": "text"  }, ④ 
      "age":      { "type": "integer" },  ⑤ 
      "created":  { 
        "type":   "date", ⑥ 
        "format": "strict_date_optional_time||epoch_millis" 
      } 
    } 
  } 
} 
  1. 创新名称为my_index索引
  2. 指定映射中字段或属性
  3. 指定title字段包括text类型值,支持全文检索
  4. 指定name字段包括text类型值,支持全文检索
  5. 指定age字段包含integer类型值
  6. 指定created字段包含日期值,且包含来年各种可能的格式

总结

本文介绍了介绍Elasticsearch Mapping,实际应用中一般需要指定映射,提升搜索准确度。


本文参考链接:https://blog.csdn.net/neweastsun/article/details/91967767
阅读延展