ElasticSearch 实战:ElasticSearch文档映射关系

本文详细介绍了Elasticsearch中的文档映射机制,包括自动映射、显式定义映射、字段类型及其属性的选择,以及如何更新映射、使用映射模板来简化管理。优化映射有助于提升搜索和分析性能,同时保证数据一致性。
摘要由CSDN通过智能技术生成

Elasticsearch 实战:Elasticsearch 文档映射关系

在 Elasticsearch 中,文档映射(Mapping)定义了索引中每个字段的类型、属性以及如何处理这些字段。正确的映射设计对数据的索引、搜索、分析至关重要。以下是如何进行文档映射关系管理的详细步骤:

**1. **自动映射(Dynamic Mapping)

Elasticsearch 具有自动映射功能,当索引中首次出现未知字段时,Elasticsearch 会根据字段值自动推断其类型,并创建相应的映射。虽然自动映射简化了索引初期的管理工作,但在实际应用中,通常建议显式定义映射以确保数据处理的一致性和准确性。

**2. **显式定义映射

创建索引时,可以显式定义映射。例如,定义一个包含 title(文本类型)、author(关键词类型)、price(浮点数类型)、publication_date(日期类型)的映射:

PUT /my_index
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      },
      "author": {
        "type": "keyword"
      },
      "price": {
        "type": "float"
      },
      "publication_date": {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss"
      }
    }
  }
}

**3. **字段类型

Elasticsearch 支持多种字段类型,如:

  • 文本类型(Text):用于全文搜索的文本字段,会被分词器处理。
  • 关键词类型(Keyword):用于精确匹配的文本字段,不会被分词器处理。
  • 数值类型:如 longintegershortbyte(整数)、doublefloathalf_floatscaled_float(浮点数)。
  • 日期类型(Date):存储日期或时间戳。
  • 布尔类型(Boolean):存储 truefalse 值。
  • 地理类型:如 geo_pointgeo_shape,用于存储地理位置信息。
  • 数组类型:一个字段可以存储多个值,如 ["apple", "banana", "orange"]
  • 对象类型:一个字段可以包含多个子字段,形成嵌套结构。

**4. **字段属性

除了字段类型外,还可以为字段指定各种属性,如:

  • 分词器(Analyzer):指定用于处理文本字段的分词器,影响全文搜索的效果。
  • 忽略空值(Ignore Malformed):设置为 true 时,遇到不符合字段类型的值时,Elasticsearch 将忽略该值而非抛出异常。
  • 多字段(Multi Fields):为同一字段创建多个视图(如一个用于全文搜索,另一个用于排序或聚合)。
  • 副本数(Fields):为字段指定副本数量,影响数据冗余和可用性。
  • 存储(Stored):决定字段值是否存储在倒排索引之外,便于后续获取原始值。
  • 索引(Indexed):决定字段是否参与搜索和排序。
  • doc_values:决定字段是否使用 doc_values 存储,影响聚合性能。

**5. **更新映射

在索引创建后,通常不允许直接修改已有的字段映射。对于新增字段或需要修改映射的场景,可以采取以下策略:

  • 使用动态映射更新:关闭自动映射,手动更新映射,然后重新索引数据。
  • 创建新索引:定义新的映射,将数据迁移到新索引,然后弃用旧索引。

**6. **映射模板(Mapping Template)

映射模板(Index Template)可以定义一套默认的映射规则,当创建符合模板匹配条件的新索引时,自动应用这些映射。这样可以简化映射管理,确保新索引的一致性。例如,创建一个适用于所有以 book_* 开头的索引的模板:

PUT _index_template/book_template
{
  "index_patterns": ["book_*"],
  "template": {
    "mappings": {
      "properties": {
        "title": {
          "type": "text"
        },
        "author": {
          "type": "keyword"
        },
        "price": {
          "type": "float"
        },
        "publication_date": {
          "type": "date",
          "format": "yyyy-MM-dd HH:mm:ss"
        }
      }
    }
  }
}

通过精心设计和管理文档映射,您可以确保 Elasticsearch 正确处理和索引数据,优化搜索和分析性能,同时简化索引的管理和维护工作。结合业务需求和数据特点,合理选择字段类型、属性以及映射管理策略,构建满足需求的索引结构。同时,关注映射对查询性能和磁盘空间的影响,适时进行映射优化。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值