es 建模学习笔记

本文讨论了Elasticsearch中的字段映射优化,包括如何处理文本、数值、枚举类型,以及如何调整索引设置以提高性能和存储效率。特别关注了如何处理搜索需求、聚合、排序,以及应对新需求时的_source管理和内容存储策略。
摘要由CSDN通过智能技术生成

字段类型
Text
用于全文本字段,文本会被analyzer分词。
默认不支持聚合分析及排序,如果需要设置fielddata为True

keyword
用于id, 枚举及不需要分词的文本,例如电话,email地址,手机号码等。
适用与Filter(精确匹配),Sorting 和Aggregatations

设置多字段类型
默认会为文本设置成 text,并且设置一个keyword的子字段。
在处理人类语言时,通过增加英文,拼音,标准分词器,提高搜索结构。

结构化数据

数值类型
尽量选择贴近的类型, 例如可以用byte,就不要用long (存储,性能)

枚举类型
设置为keyword。 即便是数字也设置成,keyword,获取更好的性能。

其他
日期/布尔/地理信息。

检索
如果不需要检索,排序和聚合分析,
enalbe设置成false

  "notenabled": {
       "type": "object",
       "enabled": false
}
 如果不需要检索
    index 设置成false
 "name": {
      "type": "text",
      "store": true,
      "index": false
    }
  对需要检索的字段,可以通过如下配置,设定存储粒度。
     index_options /Norms :不需要归一化数据时, 可以关闭。 节约磁盘。
       "chapters": {
          "type": "keyword",
          "norms": false
        },

聚合及排序
如果不需要排序或者聚合分析功能。
doc_values/fielddata设置成false
更新频繁,聚合查询频繁的keyword类型字段。
推荐将eager_global_ordinals 设置为true

是否需要专门存储当前字段数据
store 设置为true, 可以存储该字段的原始内容
一般结合_soure的enabled 为false时候使用。
disable _source:节约磁盘;适用于指标类型的数据
一般建议考虑增加压缩比。
无法看到_source字段,无法做reindex,无法做update

图书封面的mapping

"cover_url": {
	"type": "text",
	"fields": {
	 	"type":"keyword",
	 	"ignore_above": 256
	}
}

默认mapping
类型为text ,并且有一个子字段 keyword

因为我们不需要通过cover_url 进行搜索,所以我们把index 设置成false 设置false 不支持搜索,但是支持terms聚合,
如果将enabled 设置为false 则服务进行搜索和聚合分析。

优化后的mapping 为

"cover_url": {
	"type":"keyword",
	"index":false
}

新需求: 增加图书内容的字段,直接存储图书的内容,并且需求能被搜索同时支持高亮显示。

新需求会导致_source 的内容过大,
source filtering 只是传输给客户端时,进行过滤,
fetch数据时, es节点还是会传输 _source中的数据。
解决方案:
关闭_source
然后将每个字段的store 设置成true

"mappings": {
	"_source": {"enabled":false}
	"content":{"type":"text","store":true}
}

https://cloud.tencent.com/developer/article/1994074
https://static.kancloud.cn/apachecn/elasticsearch-doc-zh/1945250
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-params.html

enabled— 设置false ,仅做存储,不支持搜索和聚合分析,(数据保存在_source中)
index— 是否构建到排索引。 设置成false , 无法被搜索,但还是支持aggregation,并出现在_source 中。
Norms— 如果字段只用来过滤和聚合分析,可以关闭,节约存储。
Doc_values — 是否启用 doc_values, 用于排序和聚合。
Field_data — 如果要对text 类型启用排序和聚合分析, fielddata 需要设置成true
Store — 默认不存储,数据默认存储在_source中。
coerce – 默认开启,是否开启数据类型的自动转换(例如,字符转换数字)
Multifields 多字段特性。
Dynamic true/false/strict 控制mapping 的自动更新。

index template & dynamic template
根据索引的名字匹配不同的mapping 和setting
可以在一个mapping上动态的设定字段类型。

index Alias
无需停机,无需修改程序,即可进行修改。

update by query & reindex

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值