ElasticSearch 实战:映射的操作

Elasticsearch 中的映射(mapping)定义了索引中字段的结构和属性,如字段类型、分析器设置、多字段(multi-field)等。映射操作包括创建、查看、更新和删除映射。以下是一些实战示例:

一、创建映射

1. 创建索引时定义映射

创建索引时直接指定映射,如前所述:

curl -X PUT "localhost:9200/my_index" -H 'Content-Type: application/json' -d'
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 2
  },
  "mappings": {
    "properties": {
      "title": { "type": "text" },
      "content": { "type": "text" },
      "author": { "type": "keyword" },
      "publish_date": { "type": "date" }
    }
  }
}'
2. 使用PUT映射API单独定义映射

如果索引已经存在,可以使用 PUT 映射 API 更新或添加映射:

curl -X PUT "localhost:9200/my_index/_mapping" -H 'Content-Type: application/json' -d'
{
  "properties": {
    "new_field": {
      "type": "integer"
    }
  }
}'

此操作会添加或修改现有索引的映射。请注意,某些映射更改(如字段类型变更)可能需要重新索引数据才能生效。

二、查看映射

1. 获取索引映射

查询指定索引的完整映射定义:

curl -X GET "localhost:9200/my_index/_mapping?pretty"

或在 Kibana Dev Tools Console:

GET my_index/_mapping?pretty

这将返回 my_index 的所有映射细节,包括字段类型、属性等。

2. 查看单个字段映射

查询特定字段的映射信息:

curl -X GET "localhost:9200/my_index/_mapping/field/title?pretty"

或在 Kibana Dev Tools Console:

GET my_index/_mapping/field/title?pretty

三、更新映射

1. 添加或修改字段映射

向现有映射中添加或修改字段:

curl -X PUT "localhost:9200/my_index/_mapping" -H 'Content-Type: application/json' -d'
{
  "properties": {
    "new_field": {
      "type": "integer"
    },
    "existing_field": {
      "type": "text",
      "analyzer": "english"
    }
  }
}'

这里添加了 new_field 并修改了 existing_field 的映射属性。请注意,某些映射更改可能需要重新索引数据才能生效。

2. 更新字段多字段设置

为已有字段添加多字段(multi-field)配置:

curl -X PUT "localhost:9200/my_index/_mapping" -H 'Content-Type: application/json' -d'
{
  "properties": {
    "title": {
      "type": "text",
      "fields": {
        "raw": {
          "type": "keyword"
        }
      }
    }
  }
}'

这将在 title 字段基础上添加一个子字段 title.raw,类型为 keyword,用于精确匹配或聚合。

四、删除映射

注意:Elasticsearch 不支持直接删除映射。 如果需要移除某个字段,最接近的做法是创建一个新的索引,其映射不包含要删除的字段,然后将旧索引的数据重新索引到新索引中。删除旧索引后,新索引即替代了原索引,实现了映射的“更新”。

五、映射最佳实践

  • 明确字段类型:为每个字段指定确切的数据类型,避免依赖动态映射可能导致的意外类型推断。

  • 使用多字段:对于需要进行全文搜索和精确匹配的字段,如标题或标签,可以为其配置一个 text 类型字段和一个 keyword 类型子字段。

  • 指定分析器:对于文本字段,根据业务需求选择或自定义分析器,确保分词效果符合预期。

  • 考虑性能:合理设置映射属性以优化查询性能,如为不需要排序或聚合的字段设置 index=false,避免存储不必要的 _source 数据。

  • 规划映射变更:由于映射更新可能导致数据重新索引,应提前规划并在低峰时段执行,必要时使用 Reindex API

通过以上实战示例,您可以对 Elasticsearch 中的映射进行创建、查看、更新等操作,并遵循最佳实践来优化索引结构。在实际使用中,应密切关注官方文档,因为映射功能可能会随Elasticsearch版本更新而有所变化。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值