Dynamic Mapping 以及Mapping和常见字段类型相关问题

本文深入探讨Elasticsearch中映射(mapping)的重要性,包括字段定义、类型设定及倒排索引配置,解析动态映射(dynamic mapping)的工作原理,如何控制字段索引,以及设置null值和使用copyto功能提升查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mapping中的字段一旦设定后,禁止直接修改。因为倒排索引生成后不允许直接修改。需要重新建立新的索引,做reindex操作。
类似数据库中的表结构定义,主要作用
定义索引下的字段名字
定义字段的类型
定义倒排索引相关的配置(是否被索引?采用的Analyzer)
对新增字段的处理
true
false
strict
在object下,支持做dynamic的属性的定义

当dynamic mapping映射时。如果映射不满足我们的需求。能否进行修改映射关系,答案是不能直接修改,除非进行reindex 重建索引

dynamic mapping 就是当我们直接添加新的字段到索引中,此时如果没有指定相对应的映射关系,那么es就会自动通过dynamic mapping 进行映射

#写入文档,查看 Mapping

PUT mapping_test/_doc/1
{
  "firstName":"Chan",
  "lastName": "Jackie",
  "loginDate":"2018-07-24T10:29:48.103Z"
}
###查看 Mapping文件  已经将时间映射为date 名字映射为了 并且type 为text 同时他 额外的提供了
####    "fields" : {
####       "keyword" : {
####         "type" : "keyword",
####         "ignore_above" : 256
####       }
####     }
####  这个字段是当我们对所选字段进行聚合 查询的时候,因为当前字段属于text 类型。所以所对应的索引都会进行分词,这是我们对于整体进行聚合查询时,结果就不够准确。所以此时我们可以通过 字段名.keyword 进行聚合查询,结果就足够的准确
GET mapping_test/_mapping

DELETE mapping_test

#dynamic mapping,推断字段的类型
## 但是dynamic mapping 也会经常有不准确的时候,譬如,下面的uid映射为text ,isadmin 映射为text 而并非integer 或者 Boolean 
PUT mapping_test/_doc/1
{
    "uid" : "123",
   
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值