ElasticSearch(简称ES),是一个基于Apache Lucene(TM)的开源搜索引擎。
Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
Lucene非常复杂,直接使用,需要了解检索相关的知识。ES则是隐藏Lucene的复杂性,而是使用java编写,并并使用Lucene来建立索引并实现搜索功能,提供简单连贯的RESTful API让搜索变得简单;
ES不仅仅只提供搜索功能,还提供:
1.分布式的实时文件存储,每个字段被索引并可被搜索
2.实在分析的分布式搜索引擎
3.可以扩展到上百台服务器,处理PB级结构化或非结构化数据。
相关概念
1.接近实时(NRT)
从索引一个文档到这个文档能够被搜索到,有一个轻微的延迟(延迟1秒)
2.集群(cluster)
一个集群是由一个或多个节点组织有一起,共同持有你整个数据,并一起提供索引和搜索功能
3.节点(node)
一个节点就是一个服务器
4.索引(index)
一个索引就是一个拥有几份相似特征的文档的集合。比如,一个客户数据的索引,产品目录索引,订单数据索引。类似关系型数据库中database的概念
5.类型(type)
在一个索引中,再继续细分定义一种或多种类型。类似于关系型数据库中的table
6.文档(document)
一个文楼是一个可被索引的基础信息单元。类似于关系型数据库中Record的概念。文档包含用户定义的数据外,还包括index,type,id字段
7.分片和复制(shard & replicas)
一个索引可以存储超出单个结点硬件限制的大量数据。ES提供讲索引划分成多份的能力,这些份就叫做分片。默认情况下,每个索引被分为5个分片,每一个分片还会有一个复制分片。这样,每个索引总共就有10个分片。索引的分片可以放在集群的一台机器上,也可以放在多台主机上,这个取决于ES的内在策略。