随着,互联网应用业务越来越复杂、越来越个性化,
反应在数据层面上,也都是非结构化的数据,存储分散。
因此,构建这一类应用之上的搜索功能,再也不是一条 SQL 语句可以搞定的了。
幸运的是,很多开源和商业平台,都致力于解决对可插拔搜索技术的需求,
这些平台包括 Lucene, Sphinx, Solr, Amazon 的 CloudSearch 和 Xapian。
而 ElasticSearch 是开源搜索平台领域的一个新成员。
ElasticSearch(简称 ES) 是一个基于 Lucene 构建的开源,分布式,RESTful 搜索引擎。
设计用于云计算中,能够达到搜索实时、稳定、可靠和快速,并且安装使用方便。
支持通过 HTTP 请求,使用 JSON 进行数据索引。
接下来,介绍一下 ES 特点,以及如何快速安装和配置,介绍它的基本概念。
下一篇博客,将在 Rails 项目中对接 ES 搜索服务。
1. Open Source & Apache Lucene
开源才是王道啊,开源有益于 ES 的传播和发展。
Lucene 是基于 Java 编写的高性能,全文检索引擎。在 Lucene 之上搭建的搜索服务,功能和性能都有保障。
2. RESTful API
Almost any action can be performed using a simple RESTful API using JSON over HTTP.
RESTful 架构基本概念:
(1)每一个URI代表一种资源; (2)客户端和服务器之间,传递这种资源的某种表现层; (3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。RESTful 的架构已经成为业界普遍认可的标准。 RESTful API使得从命令行中,直接对数据进行测试及验证变得更方便了。开发者可以简单的使用 Lucene 通用的语法,或者使用基于 JSON 格式 QueryDSL(DSL:领域特定语言) 来构造搜索各种请求。非常灵活方便的构造复杂查询。
1. 业界资讯
GitHub searches 20TB of data using Elasticsearch, including 1.3 billion files and 130 billion lines of code.
Fog Creek Software 如何使用 Elasticsearch 使Kiln的搜索速度提升了1000倍。
原文链接
2. 性能对比
Apache Solr vs ElasticSearch
Realtime Search: Solr vs Elasticsearch
性能对比测试后,结论:
在数据不变的情况下,建立完索引之后进行搜索,Solr 确实很快,耗时比 ES 缩减2倍。
在数据经常变更,需要实时搜索的场景下,ES 的搜索性能将是 Solr 望尘莫及的。
2013-10-08