天天看点

Elasticsearch实战(六)-mapping映射(上)1 mapping 作用2 查看 mapping3 自定义 mapping

1 mapping 作用

类似数据库中的表结构定义,主要作用如下:

  • 定义Index下的字段名( Field Name )
  • 定义字段的类型,比如数值型、字符串型、布尔型等
  • 定义倒排索弓|相关的配置,比如是否索引、记录position等

2 查看 mapping

{
  "index" : {
    "mappings" : {
      "properties" : {
        "JSON 数据" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "公众号" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        }
      }
    }
  }
}
      
Elasticsearch实战(六)-mapping映射(上)1 mapping 作用2 查看 mapping3 自定义 mapping

3 自定义 mapping

类似 MySQL,Mapping中的字段类型一旦设定后,禁止直接修改,原因如下:

  • Lucene实现的倒排索引生成后不允许修改
  • 重新建立新的索引,然后做reindex操作

允许新增字段

通过dynamic参数来控制字段的新增

  • true (默认)允许自动新增字段
  • false不允许自动新增字段,但是文档可以正常写入,但无法对字段进行查询等操作
  • strict文档不能写入,报错
Elasticsearch实战(六)-mapping映射(上)1 mapping 作用2 查看 mapping3 自定义 mapping

copy_to

将该字段的值复制到目标字段,实现类似

_all

的作用,不会出现在

_source

中,只用来搜索

Elasticsearch实战(六)-mapping映射(上)1 mapping 作用2 查看 mapping3 自定义 mapping
Elasticsearch实战(六)-mapping映射(上)1 mapping 作用2 查看 mapping3 自定义 mapping

index

控制当前字段是否索引,默认为true,即记录索引, false 不记录, 即不可搜索

index_options

控制倒排索弓引|记录的内容,有如下4种配置

docs只记录doc id

freqs记录doc id和term frequencies

positions 记录doc id、term frequencies和term position

offsets记录doc id、 term frequencies、 term position和character offsets

text 类型默认配置为positions,其他默认为docs。记录内容越多,占用空间越大。

null_value

当字段遇到null值时的处理策略,默认为null,即空值,此时es会忽略该值。可以通过设定该值设定字段的默认值。

Elasticsearch实战(六)-mapping映射(上)1 mapping 作用2 查看 mapping3 自定义 mapping