ES 设置支持/禁用排序、聚合的mapping parameters

doc_values

doc_values参数是为了加快排序、聚合操作,在建立倒排索引的时候,额外增加一个列式存储映射,是一种空间换时间的做法。默认是开启的,大多数字段在索引时都会生成doc_values,但是text字段除外。对于确定不需要排序或者聚合的字段,可以关闭doc_values以节省磁盘空间。

PUT my_index
{
  "mappings": {
    "properties": {
      "status_code": { 
        "type":       "keyword"
      },
      "session_id": { 
        "type":       "keyword",
        "doc_values": false
      }
    }
  }
}

 status_code字段默认开启doc_values。

session_id字段禁用了doc_values,但是仍能查询。

flieldData

query要解决的问题是,“包含查询关键词的文档有哪些”,aggregation刚好相反,aggregation要解决的问题是,“文档包含哪些词项”,大多数字段在索引时都会生成doc_values,但是text字段除外。取而代之,text字段在查询时会生成一个fielddata的数据结构,fielddata在字段首次被聚合、排序或者使用脚本的时候生成。ES通过读取磁盘上的倒排记录表重新生成文档词项关系,最后在java堆内存中排序。

text字段的fielddata属性默认是关闭的,开启fielddata非常消耗内存。给text字段开启fielddata的命令如下:

PUT my_index/_mapping
{
  "properties": {
    "my_field": { 
      "type":     "text",
      "fielddata": true
    }
  }
}

译自:ES doc_values

ES fielddata

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值