ElasticSearch 学习 概述
概述
是什么?
Elasticsearch
,简称ES
,是一个基于Apache Lucene
做了一些封装和增强,一个高扩展的分布式全文搜索引擎,可以近乎实时的存储,检索数据.并且开源.
起什么作用?
全文搜索,结构化搜索,分析,还可以将三者混合使用.
为什么是 ES?
为什么不选Lunece?
Lucene
是一套信息检索工具包(jar
包),不包含搜索引擎系统.
想要使用 Lucene
:
- 必须使用
Java
来作为开发语言并将其直接集成到你的应用中. Lucene
非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。
对比之下, ES
也使用 Java
开发并使用 Lucene
作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTful API
来隐藏Lucene
的复杂性,从而让全文搜索变得简单.
为什么不选 Solr?
Solr
的安装更复杂,ES
基本是开箱即用(解压就可以用)ElasticSearch
本身自带分布式协调管理功能,而Solr
需要Zookeeper
进行分布式管理
但是 Solr
也有其强项
Solr
支持更多格式的数据,比如JSON、XML、CSV
,而Elasticsearch
仅支持json
文件格式Solr
官方提供的功能更多,而Elasticsearch
本身更注重于核心功能,高级功能多有第三方插件提供,例如图形化界面需要kibana
友好支撑Solr
比较成熟,有一个更大,更成熟的社区,而Elasticsearch相对开发维护者较少,更新太快,学习使用成本较高.
选型
- Solr查询快,但更新索引时慢(即插入删除慢),用于电商等查询多的应用.
- ES建立索引快 (即查询慢),即实时性查询快,用于facebook新浪等搜索.
- Solr是传统搜索应用的有力解决方案,但Elasticsearch更适用于新兴的实时搜索应用