es基础-mapping

一,dynamic mapping

dynamic mapping有两层意思:

1,当索引没有被创建时,保存文档会自动创建索引,同时根据文档各字段值推断字段类型,这称之为dynamic mapping。

2,索引创建后,如果要新加字段,分为几种情况。

PUT lcy_test/_mapping
{
  "dynamic":"strict"
}
 如果mapping的danamic属性为false,可以创建文档,但新增字段不能被索引,mapping不会更新;
 如果mapping的danamic属性为true,可以创建文档,新增字段能被索引,mapping会更新;
如果mapping的danamic属性为strict,创建文档包括新增字段,会报错;

二,指定mapping

// copy_to、不索引、数组

PUT lcy_test2
{
  "mappings": {
    "properties": {
      "firstname":{
        "type":"text",
        "copy_to": "fullname"
      },
      "lastname":{
        "type":"text",
        "copy_to": "fullname"
      },
      "mobile":{
        "type":"text",
        "index": false
      }
    }
  }
}

插入一条文档

POST lcy_test2/_doc
{
  "firstname":"lu",
  "lastname":"chu",
  "mobile":1323
}

用虚拟字段查询

GET lcy_test2/_search?q=fullname:(lu chu)

存放数组。

// es没有专门的数组类型,但是任何类型都可以存放数组
POST lcy_test2/_doc
{
  "firstname":"lu",
  "lastname":["chu","yong"],
  "mobile":1323
}

三,index template 和dynamic template

index template指的是预先设定一些索引规则,包括settings和mapping,创建索引时如果匹配了这个template,会按照这个模板创建索引。index template的创建不依赖与某个具体的索引。

dynamic template 的创建依赖于某具体的索引,可以针对字段类型提前做设置,以按照预期创建索引:比如对于整数,由于es无法区分是int还是long,如果不特别指定,会将所有的整数自动定位long类型,用dynamic template,我们可以指定满足某些条件的字段自动定位integer而不是long。

四,细节

1,“null_value”:“NULL”
2, copy_to
3, “index”:“false”,设置字段不索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小手追梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值