Elasticsearch是一个开源的搜索引擎,是一个建立在全文搜索库Apache Lucene库中上。Lucene可以说是当下不论是私有还是开源中,最先进,功能最全,高性能的搜索引擎库。
但是Lucene仅仅是一个库,你需要使用Java将Lucene集成到应用程序中。
Elasticsearch是用Java编写的,它的内部使用Lucene做搜索和索引,但是它的目的是为了让全文搜索变得更简单,通过隐藏Luncene的复杂性,取而代之提供了一套简单一致的 RESTful API。
然而Elasticsearch不仅仅是Lucene,也不仅仅是全文搜索引擎。它可以被下面这样准确的来形容:
1)一个分布式的实时文件储存,每个字段可以被搜索与索引
2)一个分布式实时分析搜索引擎
3)能胜任上百个服务节点的扩展,并支持PB级别的结构化和非结构化的数据
Elasticsearch 将所有的功能打包成一个单独的服务,这样你可以通过程序与它提供的简单的 RESTful API 进行通信, 可以使用自己喜欢的编程语言充当 web 客户端,甚至可以使用命令行(去充当这个客户端)。
如果你正在使用 Java,在代码中你可以使用 Elasticsearch 内置的两个客户端:
节点客户端(Node client)
节点客户端作为一个非数据节点加入到本地集群中。换句话说,它本身不保存任何数据,但是它知道数据在集群中的哪个节点中,并且可以把请求转发到正确的节点。