【学习笔记】ElasticSearch入门

今天同事分享了ES的入门。

ES是什么

  • 基于lucene的分布式搜索引擎
  • 开箱即用

ES基本概念

  • indeces
  • types
  • document

ES基本操作的分布式实现

  • 文档如何路由到分片?

    shard = hash(routing) % number_of_primary_shards

    routing可以是任意字段,默认用ID。由于路由于分片相关,所以分片数量需要在划分索引前确定。(不支持动态索引?)

  • 分布式增删改

    1. 任何一个Node可以为用户提供服务

    2. 服务Node找到主分片所在的Node

    3. 主分片Node操作,并发给各从分片

    4. 服务Node返回结果给用户

  • 分布式查

    由服务Node轮训各个Node,以保障负载均衡

分析器和倒排索引

  • _all 字段

    默认情况下ES除了给所有字段创建索引外,还把他们放在一起,即_all字段,并创建索引

  • 倒排索引

什么是倒排索引

  • 分析器

    • 字符过滤

      例如:去除HTML,转化&and

    • 分词

    • 标记过滤

      大小写转换、去掉无意义的词(a, the, and)、增加同义词

索引

  • 不可变性

  • 动态性

  • 近实时搜索和持久化

    • 每一分钟都从内存缓存刷到硬盘缓存
    • 同时写一个硬盘translog,避免数据丢失