ES 知识点

189 阅读1分钟

ES 父子文档

ES 删除父文档时,子文档不会被删除

ES 搜索时各个节点是怎么工作的(ES 读数据的流程)

  • 客户端向任意节点发送请求,处理请求的节点就是协调节点
  • 协调节点将请求转发到所有 shard
  • query phase: 每个 shard 将自己的搜索结果(doc id)返回给协调节点,由协调节点进行数据的合并、排序、分页等
  • fetch phase: 协调节点根据 doc id 去各个节点拉取实际的 doc 文档,最后返回给客户端

ES 写数据过程

  • 客户端向任意节点发送请求,处理请求的节点就是协调节点
  • 协调节点将请求路由到主分片节点
  • 主分片节点处理请求后,同步到副本分片
  • 协调节点返回响应

ES 索引设计优化

  • 字段拉平:将复合字段拆分为多个不同字段,查询时减少查询的字段个数
  • 提前建立 mapping: 预先建立 mapping,而不是让 ES 自动生成数据类型,加速索引
  • 实使用 keyword 代替 int/long

ES 查询方法优化

  • 使用 filter: filter 过滤器用户回答这个文档是否匹配子句,ES 只需要回答 或者 ,不需要为过滤器子句计算相关性分数,而且过滤器结果可以缓存

match 执行流程

pdai.tech/md/db/nosql…