介绍Elasticsearch Mapping

介绍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,实际应用中一般需要指定映射,提升搜索准确度。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值