继续上篇笔记中没讲完的映射参数。
doc_values 和 fielddata
doc_values 参数的用于 排序,聚合操作。默认是开启的,如果确定某个字段不需要排序或者不需要聚合,那么可以关闭掉这个参数。
eg:
1. 创建一个索引,并且向其中存入数据
2. 查询,并将结果排序,由于 doc_values 默认是开启的,所以我们不需要做任何额外操作,可以直接进行排序
大部分的字段在索引的时候都会生成 doc_values。但是 text 不会, text 字段在查询的时候会生成一个 fielddata 的数据结构,fieldata
在字段首次被聚合,排序的时候生成。但是这个fieldata 的使用场景较小。
因为正常来说。没有在这个 text 上做聚合排序的说法。
如果非要有这样的需求,那就要考虑好是否非得这样实现?
dynamic
当文档中新增的字段,mappings 应该如何处理
具体的在 动态映射 中的 自动增加字段。
enabled
es 默认会索引所有的字段,但是有的字段可能只需要被存储,不需要被索引
例如:没有人会拿着商品图片的链接来检索商品,所以商品的图片这个字段就不需要被索引
设置 enabled =false,则可以让 es 不索引这个字段。
format
规范日期格式,
并且一次可以定义多个,中间用 ||
连接。注意不加空格
如果用户没有指定日期的 format,默认的日期格式为 strict_date_optional_time||epoch_mills
ignore_above
这个参数只适用于 keyword 类型
作用是指定分词和索引的字符串的最大长度,超过最大长度的话,该字段将不会被索引。
eg:
ignore_malformed
用于忽略不规则的数据,例如之前的关闭date类型的日期检测。默认值为 false
index
指定一个字段是否被索引。为 true 表示字段被索引,可以通过对应的字段搜索,反之 为 false 则不能。
index_options
index_options 控制索引时哪些信息被存储到倒排索引中(用在 text 字段中),有四种取值
1. docs 只存储文档的编号,默认值
2. freqs 在 docs 基础上,存储词项频率
3. positions 在 freqs 基础上,存储词项偏移位置
4. offsets 在 positions 基础上,存储词项和结束的字符位置
norms
用于 字段评分,text 默认开始 norms,其他数据类型如果不是特别需要,不会开启这个。
null_value
在 es 中,值为 null 的字段不索引也不可以被搜索,null_value 可以让值为 null 的字段显式的可搜索,可索引
fields
fields 参数可以让同一字段有多种不同的索引方式