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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用 curl 命令来设置 Elasticsearch mapping,以下是设置 mapping 的步骤: 1. 创建一个 JSON 文件,其包含您要设置mapping 信息。例如,以下是一个包含 mapping 信息的示例文件: ``` { "properties": { "user_id": { "type": "integer" }, "user_name": { "type": "text" }, "user_email": { "type": "keyword" } } } ``` 在上面的示例,我们定义了一个名为 `user` 的 index,其包含三个字段:`user_id`、`user_name` 和 `user_email`。 2. 使用 curl 命令向 Elasticsearch 的 index 设置 mapping。以下是一个示例命令: ``` curl -XPUT -H "Content-Type: application/json" http://localhost:9200/<index_name>/_mapping -d @<path_to_mapping_file> ``` 在上面的命令,您需要将 `<index_name>` 替换为您要设置 mapping 的 index 名称,将 `<path_to_mapping_file>` 替换为包含 mapping 信息的 JSON 文件的路径。 例如,如果您要将上面的 mapping 设置到名为 `user` 的 index ,您可以使用以下命令: ``` curl -XPUT -H "Content-Type: application/json" http://localhost:9200/user/_mapping -d @mapping_file.json ``` 在上面的命令,`mapping_file.json` 是包含 mapping 信息的 JSON 文件的名称。 3. 确认 mapping 设置成功。您可以使用以下命令来检查 index 的 mapping 设置: ``` curl -XGET http://localhost:9200/<index_name>/_mapping ``` 在上面的命令,您需要将 `<index_name>` 替换为您要检查 mapping 的 index 名称。 例如,如果您要检查名为 `user` 的 index 的 mapping,您可以使用以下命令: ``` curl -XGET http://localhost:9200/user/_mapping ``` 以上是使用 curl 命令设置 Elasticsearch mapping 的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值