- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
PAGE2
Elasticsearch索引的架构设计
目录
TOC\o1-3\h\z\u1、Elasticsearch索引的设计 3
注意1:不要在一个索引中定义多个type。 6
注意2:将Set_source设置为false。 6
注意3:将_all设置为false。 7
注意4:设置dynamic=strict。 7
注意5:使用keyword类型 8
注意6:使用别名 9
2、Elasticsearch分片分配原则 10
步骤1:定义索引 11
步骤2:评估数据量 11
步骤3:评估索引大小和磁盘空间 12
步骤4:计算分片数 12
步骤5:评估索引数和类型 12
3、数据去重的思考 12
1、Elasticsearch索引的设计
1.1单一索引还是基于时间的索引?
单一索引的问题:
1)不能更新Mapping。
比如:主分片数不可以修改(除非reindex)。
2)无法灵活、快速地扩展。
3)更适合固定、小型数据集。
基于时间的索引面临的问题:
1)如何确定间隔?
数据量
变更频率
默认尝试每周为单位分割——建议
2)如何实施?
索引模板
1.2定义索引注意事项
举例:
{
????facet_internet_access_minute:{
????????template:ce-index-access-v1-*,
????????order:0,
????????settings:{
????????????number_of_shards:5
????????},
????????aliases:{
????????????{index}-query:{
????????????}
????????},
????????mappings:{
????????????es_doc:{
????????????????dynamic:strict,
????????????????_all:{
????????????????????enabled:false
????????????????},
????????????????_source:{
????????????????????enabled:false
????????????????},
????????????????properties:{
????????????????????CLF_Timestamp:{
????????????????????????type:long
????????????????????},
????????????????????CLF_CustomerID:{
????????????????????????type:keyword
????????????????????},
????????????????????CLF_ClientIP:{
????????????????????????type:ip,
????????????????????????ignore_malformed:true
????????????????????}
????????????????}
????????????}
????????}
????}
}
注意1:不要在一个索引中定义多个type。
6.X版本已经不支持,7.X版本彻底不支持。
扩展问题:5.X版本的父子文档实际实现中是一个索引中定义了多个type,到了6.X中实现方式改变为:join方式。
注意2:将Set_source设置为false。
假设你只关心度量结果,不是原始文件内容。
将节省磁盘空间并减少IO。
这个点,需要结合实际的业务场景具体问题具体分析。
举例:
_source:{
enabled:false
},
注意3:将_all设置为false。
假设你确切地知道你对哪个field做查询操作?
能实现性能提升,缩减存储。
举例:
_all:{
enabled:false},
注意4:设置dynamic=strict。
假设你的数据是结构化数据。
字段设置严格,避免脏数据注入。
举例:
dynamic:strict,
注意5:使用keyword类型
假设你只关心完全匹配
提高性能和缩小磁盘存储空间
举例:
CLF_CustomerID:{
type:keyword
},
注意6:使用别名
如何在不停机的前提从一个索引切换到另一个索引?
举例:
aliases:{
{index}-query:{
}
或者你通过head插件创建。
2、Elasticsearch分片分配原则
社区和QQ群中经常被问到的问题:
1
文档评论(0)