1. 什么是 ElasticSearch
- ElasticSearch 简称 ES. ES 是一个开源的高扩展的分布式全文检索引擎, 它可以近乎实时的存储, 检索数据. 本身的扩展性很好, 可以扩展到上百台服务器, 处理 P8 级别的数据.
- ES 也使用 java 开发并使用 Lucene 作为其核心技术来实现所有索引和搜索的功能. 但是它的目的是通过简单的 REST API 来隐藏 Lucene 的复杂性, 从而让全文搜索变的简单.
2. 什么是 ElasticSearch 索引
-
Elasticsearch 索引指相互关联的文档集合。Elasticsearch 会以 JSON 文档的形式存储数据。每个文档都会在一组键(字段或属性的名称)和它们对应的值(字符串、数字、布尔值、日期、数值组、地理位置或其他类型的数据)之间建立联系。
-
Elasticsearch 使用的是一种名为倒排索引的数据结构,这一结构的设计可以允许十分快速地进行全文本搜索。倒排索引会列出在所有文档中出现的每个特有词汇,并且可以找到包含每个词汇的全部文档。
-
在索引过程中,Elasticsearch 会存储文档并构建倒排索引,这样用户便可以近实时地对文档数据进行搜索。索引过程是在索引 API 中启动的,通过此 API 您既可向特定索引中添加 JSON 文档,也可更改特定索引中的 JSON 文档。
3. ElasticSearch 能用来做什么
- 应用程序搜索
- 网站搜索
- 企业搜索
- 日志处理和分析
- 基础设施指标和容器监测
- 应用程序性能监测
- 地理空间数据分析和可视化
- 安全分析
- 业务分析
4. ElasticSearch 对比 Solr
- Solr 使用 Zookeeper 进行分布式管理.
- ElasticSeatch 自身带有分布式协调管理功能.
- Solr 支持更多格式的数据
- ElasticSearch 仅支持 JSON 文件格式
- Solr 官方提供的功能更多
- ElasticSearch 本身注重核心功能, 高级功能大多是有第三方提供.,
- Solr 在传统的搜索应用中表现好于 ElasticSearch.
- ElasticSearch 在处理实时搜索上效率明显高于 Solr.
总结: 在传统搜索应用基本还是使用 Solr ,在实时搜索上有要求的使用 ES
5. ElasticSearch 的使用案例
- 2013 年初 GitHub 抛弃了 Solr, 采用 ElasticSearch 来做 PB 级的搜索. "GitHub 使用 ElasticSearch 搜索 20TB 的数据, 包括 13 亿文件和 1300 亿万行代码."
- 维基百科: 启动以 ElasticSearch 为基础的核心搜索架构.
- SoundCloud: 使用 ElasticSearch 为 1.8 亿用户提供即时而准确的音乐搜索服务.
- 百度: 百度目前广泛使用 ElasticSearch 作为文本数据分析, 采集百度所有服务器上的各类指标数据及用户自定义数据. 通过对多种数据进行多维分析展示, 辅助定位分析实例异常或业务层面异常. 覆盖了百度内部多个业务线.
- 新浪使用 ES 分析处理 32 亿条实时日志
- 阿里使用 ES 构建自己的日志采集和分析体系.
网友评论