ES中的动态映射和动态模板

本文介绍了Elasticsearch中的动态映射特性,包括如何动态更新映射,手动干预动态映射,以及如何使用动态模板来约束和自定义字段映射。通过动态模板,可以更精确地控制数据类型,如将所有string映射为keyword,number映射为double。同时,文章详细阐述了动态模板的查看、检查、创建和删除操作。
摘要由CSDN通过智能技术生成

为了方便演示和切换 ES 地址,在 ~/.bashrc 中添加如下变量和脚本:

ES=localhost:9200
escurl () { 
   curl -H 'Content-Type: application/json' "$@";
}
复制代码

Elasticsearch 具有非常强大的动态性和灵活性,例如当向一个不存在的索引添加文档时,会自动创建该索引,例如:

$ escurl -XPUT $ES/my_article/doc/1?pretty -d '
{
  "title": "标题",
  "createdAt": "2020-02-02T02:02:02.020Z",
  "wordCount": 100,
  "extra": {
    "deleted": false,
    "score": 8.5
  }
}'
复制代码

如果 my_article 索引不存在,则会自动创建 my_article 索引,并向其中添加数据,其数据结构为:

{
  "mappings": {
    "doc": {
      "properties": {
        "createdAt": { "type": "date" },
        "wordCount": { "type": "long" },
        "extra": {
          "properties": {
            "score": { "type": "float" },
            "deleted": { "type": "boolean" }
          }
        },
        "title": {
          "type": "text",
          "fields": {
            "keyword": {
              "ignore_above": 256,
              "type": "keyword"
            }
          }
        }
      }
    }
  }
}
复制代码

可以发现 ES 自动做了如下字段类型映射

  • title 字段映射成 text 类型
  • createdAt 字段映射成 date 类型
  • wordCount 字段映射成 long 类型
  • extra.score 字段映射成 float 类型
  • extra.deleted 字段映射成 boolean 类型

猜测非常准确,而且后续增加新字段还可以动态猜测并更新 mapping。

动态更新映射

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值