0%

elasticsearch数据结构

节点

ES节点分master和data节点.为避免脑裂,应设置discovery.zen.minimum_master_nodes参数,值为集群中master节点数量/2 + 1,默认1.

index

合理设置索引分片数量,单个分片的存储doc数为2,147,483,519,建议小于30G,索引分片的数量依据节点数量,单个节点上单个索引的分片数量小于3,小规模集群分片数量小于等于数据节点数量最佳.

ES每个查询在每个分片的单个线程中执行再聚合,如果指定routing会提升查询效率.

type

  • 5.x版本支持多个type
  • 6.x版本仅支持一个type,可以自定义
  • 7.x版本所有type默认为_doc,也可以自定义但不推荐

id

  • 自动生成的是20位GUID
  • 支持手动生成

Mapping字段

字段尽量少用nestedparent/child,非常影响查询效率.尽量采用宽表设计.如果一定要使用nested fields,保证nested fields字段不能过多,目前ES默认限制是50。
index.mapping.nested_fields.limit: 50