四、索引创建分片30. 副本分片数大于等于 1 。高可用性保证 。增加副本数可以一定程度上提高搜索性能;但会降低写入性能,建议每个主分片对应 1-2 个副本分片即可 。
31. 官方建议单分片限制最大数据条数不超过 2^32 - 1 。32. 索引主分片数量不要设置过大 。ES 创建好索引后,一般情况下不再动态调整主分片数量 。
每个分片本质上就是一个 Lucene 索引,因此会消耗相应的文件句柄、内存和 CPU 资源 。
ES 使用词频统计来计算相关性,当然这些统计也会分配到各个分片上,如果在大量分片上只维护了很少的数据 , 则将导致最终的文档相关性较差 。
一般来说 , 我们遵循一些原则:
- 读场景较多则可以设置少一点,写场景则可以设置多一些 。
- 控制每个分片占用的硬盘容量不超过ES的最大 JVM 的堆空间设置(32G) , 因此 , 如果索引的总容量在 200G 左右,那分片大小在 7-8 个左右即可 。
- 考虑一下 Node 数量,一般一个节点对应一台物理机,如果分片数远大于节点数,则一个节点上存在多个分片 , 一旦该节点故障 , 即使保持了1个以上的副本,同样有可能会导致数据丢失,集群无法恢复 。所以,一般都设置分片数不超过节点数的 3 倍 。
Mapping设计
34. 避免使用字段动态映射功能,指定具体字段类型,子类型(若需要),分词器(特别有场景需要) 。35. 对于不需要分词的字符串字段,使用 Keyword 类型而不是 Text 类型 。36. ES 默认字段个数最大 1000 , 建议不要超过 100 。单个 Doc 在建立索引时的运算复杂度 , 最大的因素不在于 Doc 的字节数或者说某个字段 Value 的长度,而是字段的数量 。例如在满负载的写入压力测试中,Mapping 相同的情况下,一个有 10 个字段,200 字节的 Doc , 通过增加某些字段 Value 的长度到 500 字节,写入 ES 时速度下降很少,而如果字段数增加到 20,即使整个 Doc 字节数没增加多少,写入速度也会降低一倍 。
37. 对于不索引字段,Index 属性设置为 False 。在下面的例子中,Title 字段的 Index 属性被设置为 False , 表示该字段不会被包含在索引中 。而 Content 字段的 Index 属性默认为 True,表示该字段会被包含在索引中 。需要注意的是,即使 Index 属性被设置为 False,该字段仍然会被保存在文档中,可以被查询和聚合 。
参考示例:
{"mappings": {"properties": {"title": {"type": "text","index": false},"content": {"type": "text"}}}}
38. 避免使用 Nested 或 Parent/Child 。Nested Query慢,Parent/Child Query 更慢,针对 1 个 Document,每一个 Nested Field 都会生成一个独立的 Document,这将使 Doc 数量剧增,影响查询效率尤其是 JOIN 的效率 。因此能在 Mapping 设计阶段搞定的(大宽表设计或采用比较 Smart 的数据结构) , 就不要用父子关系的 Mapping 。如果一定要使用 Nested Fields , 保证 Nested Fields字段不能过多 , 目前ES默认限制是Index.mapping.nested_fields.limit=50 。不建议使用 Nested , 那有什么方式来解决 ES 无法 JOIN 的问题?主要有几种实现方式:- 在文档建模上尽可能在设计时将业务转化有关联关系的文档形式 , 使用扁平的文档模型 。
- 独立索引存储,实际业务层分多次请求实现 。
- 通过宽表冗余存储避免关联 。
- 否则 Nested 和 Parent/Child 存储对性能均有一定影响,由于 Nested 更新子文档时需要 Reindex 整个文档 , 所以对写入性能影响较大,适用于 1 对 n(n 较?。┏【埃籔arent/Child 存储在相同 Type中,写入相比 Nested性能高,用于 1 对 n(n 较大)场景,但比 Nested 查询更慢 , 官网说是 5-10 倍左右 。
推荐阅读
- 手机卡顿反应慢,原来是这个设置没关,关掉它,手机立马流畅不卡
- 朋友圈个性签名能怎么改,微信个性签名怎么在更多里面
- 删除短信怎么找回,一个手机号的短信怎么恢复
- 生儿不如养儿!20年前金星领养的三个孩子,如今怎样了!
- 湖北小伙被外国美女模特倒追,生下两个混血女儿,大女儿超像杨幂
- 个人去税务局开票需要提供什么
- 小米手环5如何储存多个表盘,小米手环5如何设置太空人壁纸
- 疯马秀风波四个月:张嘉倪baby遭封杀,人气跌落神色憔悴。
- 周海媚离开令马景涛肝肠寸断,咆哮帝一个用生命演戏的男人
- 有一种“整容”叫唐艺昕结婚,老公张若昀变化不大,她却像换了个人