ElasticSearch 介绍

ElasticSearch 是一个基于 JSON 的分布式搜索和分析引擎。

特点:

  • 通过 RESTful API 交互
  • 基于 Lucene
  • 面向文档
  • 近乎实时
  • 分布式
  • 高扩展
  • 搜索
  • 分析

应用:

  • 搜索分析应用
  • 日志应用

版本变化:

image.png
截止 V1.5.2 版本,O2使用的 ES 版本是 7.5.2

与 ElasticSearch 交互

  1. 外部通过 RESTful API with JSON over HTTP 在 9200 端口
  2. 内部通过 9300 端口使用 ES 原生传输协议
  3. 虽然有 Kibana、ES Head 等插件,但平时因为需要管理的 ES 实例很多,所以会通过 Postman ,为不同的环境建立环境变量,然后统一管理。


O2 使用现状

应用的业务:

  • 商品搜索(首页搜索框、类别选择、筛选条件)
  • 联想词搜索(首页搜索框提示)
  • 收藏夹搜索
  • 订单搜索

应用 ES 的功能:

  • 多租户索引
  • 使用别名实现零停机
  • 索引使用静态映射
  • 第三方分词器 IK Analyzer

选择 ES 的理由

  1. ES 开箱即用,绝大部分默认配置都是最优选择
  2. 除文本搜索外,ES 处理分析查询更加优秀
  3. ES 拥有更好的伸缩性和分布式性
  4. ES 在开源日志管理用例中占据主导地位
  5. ES 暴露更多监控的关键指标

使用 ES 的公司

  • Github: 2013年用 ES 替换了 Solr 进行 PB 级别的搜索(大概 20TB 的数据,包括13 亿文件和 1300 亿行代码)
  • 维基百科: 以 ES 为基础的核心搜索架构
  • 百度:广泛使用 ES 作文分本分析
  • 新浪:使用 ES 分析处理 32 亿条实时日志
  • 阿里:使用 ES 构建日志采集和分析体系
  • Stack Overflow