Elasticsearch的Mapping使用说明

401 阅读4分钟

这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战

text

  • 会被分词,然后构建倒排。
  • 不用于排序,很少用于聚合。

keyword

  • 不会被分词
  • 用于过滤。

Numeric datatypes

  • 数值类型:long,integer,short,byte,double,float,half_float,scaled_float 表示数据范围不同。
  • 对于浮点数,尽量使用scaled_float。

scale_float

  • 通过设置缩放因子来存放数值。比如12.12 设置缩放因子为100 那么底层存的数据其实是1212。压缩整数比压缩浮点数更加节省存储空间。

date

  • 可以put的时候存入时间格式字符串,时间戳都行。内部存储的是long型的毫秒数。

boolean

  • 存入true和false

binary

  • 存放base64编码的字符串,默认不存储也不搜索。

  • 但是可以在_source里面获取。只是为了保存数据的。

array

  • es的数组,一个字段里面的值必须是同一个类型。

object

  • 存储对象
  • 对象在构建索引的时候会被压平: field:{name:"xx"} ==> field.name:"xx"

nested

  • object的一个特例,针对object解决对象数组的问题:field: [{name:"xx1"},{name:"xx2"}] ==> field.name:["xx1","xx2"] 这样压平后,对象失去了联系。

  • nested类型数组对象里面的每一个元素都会被当做一个doc隐藏的去建立索引。索引一个index包含了100个nested的文档,就相当于索引了101个文档。(每个nested都是单独一个文档索引)为了防止过度定义该类型字段,限定了该字段个数不超过50个。

geo point

  • 传入精度和纬度,坐标点

geo shape

  • 可以存入一块区域。GeoJSON来表示一个范围

ip

  • 存ip地址

range

  • integer_range float_range .... date_range等。

token_count

  • 表示分词后词项的个数。

映射字段

  • 上面字段的附加属性。

analyzer

  • 指定分词器

search_analyzer

  • 指定搜索的分词器,默认使用analyzer指定的。

normalizer

  • 解析前的标准化,如在搜索和索引前将字段所有字符转化为小写。

boost

  • 设置针对某个字段查询的权重。可以设置在索引层和搜索层,推荐搜索层设置权重。

coerce

  • 整理脏数据,将非法数据转合法。 比如 “3” 传 int的3

copy_to

  • 自定义 _all 字段,将多个字段的值复制到一个超级字段上。

doc_values

  • 加速排序和聚合操作,默认开启的。对于确定不会排序和聚合的字段可以关闭来节省空间。

dynamic

  • 指定动态映射时候出现未出现的字段时候的执行的策略:
    • true:自动添加字段
    • false:忽略新字段
    • strict:严格模式,发现新字段就抛出异常。

enabled

  • 针对只需要被存储,不需要查询聚合操作的字段。enabled为false的字段会被自动跳过构建索引和存储。就是忽略doc这个字段的意思。但是_source可以取到这个字段。
  • 比如es需要保存doc信息,但是doc里面的有些字段我们并不需要放入index,那么可以设置enabled为false。这个和object类型可以实现的功能差不多。

fielddata

  • 大部分字段在索引时候会生成doc value。text字段除外。 这个需要细看。
  • 很吃内存。

format

  • 设置可以支持的格式,比如时间的格式

ignore_above

  • 只用于keyword类型
  • 指定字段类型字符串最大的长度,超过长度会被忽略。

ignore_malformed

  • 忽略异常,异常数据不索引。

include_in_all

  • 指定字段是否在_all 字段中。

index

  • 指定字段是否索引,不索引则不支持搜索。

index_options

  • 设置字段哪些信息存储到倒排索引中去(文档编号,词项频率,词项位置,词项开始和结束字符位置这些信息)

fields

  • 让同一字段有多种不同的索引方式。
  • 一个字段 既按照text索引(用于全文搜索),又按照keyword(聚合和排序,es不可以用text来排序)索引。

norms

  • 标准化文档,以便查询时计算文档的相关性,对评分有用。

  • 但是消耗磁盘空间,不建议开启。

null_value

  • 值为null的字段,不可以索引也 不可以搜索。null_value 可以让null的字段可以显示索引和搜索。

position_increment_gap

properties

similarity

  • 指定文档评分模型

store

  • 文档是否存储。即使不存储也会在_source中存储。

term_vector

  • 词向量。

元字段

  • 用于描述文档本身的字段。就是我们search后结果中那些不是我们put进去的数据。

_index

  • 表明该doc是属于哪个index的

_source

  • 存储文档的原始值,默认开启。可以enable进行关闭。

  • 但是一般不要去关闭,因为很多地方需要用:update reindex等都需要使用_source的值。

_size

  • 统计文档大小,默认不需要。

_all

  • 将其他的字段拼接一起形成一个超级字段。所有的字段按照空格分开。

  • 一般用途,我们完全不知道对哪个字段(或者字段范围)进行搜索的时候,使用all全局搜。

_field_names

  • 存储文档非空字段名,常用语exists查询。

_parent

  • 指定同一个索引中,文档的父子关系。

_rounting

  • 依据指定的公式,将文档分配到指定的分片上。