一、ElasticSearch简介
Elasticsearch是一个基于Apache Lucene(TM)的开源实时分布式搜索和分析引擎,能够快速的分析处理大数据。其中Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。Elasticsearch不仅仅是Lucene和全文搜索,还能实现以下功能:
- 分布式的实时文件存储,每个字段都被索引并可被搜索
- 分布式的实时分析搜索引擎
- 可以扩展到上百台服务器,处理PB级结构化或非结构化数据
ElasticSearch的用途包括:
- 全文搜索
- 结构化搜索
- 数据分析
- 以上三者的混合使用
在Elasticsearch中存储数据的行为就叫做索引(indexing),且在索引之前,我们需要明确数据应该存储在哪里。Elasticsearch集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包含多个文档(documents)(行),然后每个文档包含多个字段(Fields)(列)。
二、与ElasticSearch交互
Java API
Elasticsearch为Java用户提供了两种内置客户端:
1. 节点客户端(node client)
节点客户端以无数据节点(none data node)身份加入集群,换言之,它自己不存储任何数据,但是它知道数据在集群中的具
体位置,并且能够直接转发请求到对应的节点上。
2. 传输客户端(Transport client)
更轻量的传输客户端,能够发送请求到远程集群。它自己不加入集群,只是简单转发请求给集群中的节点。
两个Java客户端都通过9300端口与集群交互,使用Elasticsearch传输协议(Elasticsearch Transport Protocol)。集群中的节点
之间也通过9300端口进行通信。如果此端口未开放,你的节点将不能组成集群。
REST API
其他所有程序语言都可以使用RESTful API(基于HTTP协议,以JSON为数据交互格式),通过9200端口的与Elasticsearch进行通信。
CURL命令
三、集群和节点
节点(node)是一个运行着的Elasticsearch实例。集群(cluster)是一组具有相同 cluster.name 的节点集合,他们协同工作,共
享数据并提供故障转移和扩展功能,当然一个节点也可以组成一个集群。
四、SpringBoot集成ElasticSearch使用案例
未完待续....