最近在做分库分表,准备使用elasticsearch(ES)做索引,所以学习下,有问题和大家一起讨论。
还是第一步,基础理论,基本都是官网上的。
ES是什么?
Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API
来隐藏Lucene的复杂性,从而让全文搜索变得简单。
为什么选择ES?
- 分布式的实时文件存储,每个字段都被索引并可被搜索
- 分布式的实时分析搜索引擎
- 可以扩展到上百台服务器,处理PB级结构化或非结构化数据
-
支持水平扩展,理论上无限制,可以扩展到上百台服务器,处理PB级结构化或非结构化数据;
-
无论是增加节点,还是移除节点,分片都可以做到无缝的扩展和迁移。
-
ES集群中,数据被分散(hash)到多个分片中,每个分片根据设置会有一到二个冗余的分片副本,主分片以及副本分片被分散到不同的节点上;这保证了在硬件故障时数据不会丢失;
-
ES在分布式概念上做了很大程度上的透明化,你不需要知道任何关于分布式系统、分片、集群发现或者其他大量的分布式概念