互联网的搜索和我们的生活息息相关,例如我们常用的百度,谷歌,淘宝商品的搜索功能等等。面对海量数据能快速,精确地返回用户想要的数据,这背后离不开一个好的搜索引擎。而elasticsearch无疑是当下最受欢迎的分布式搜索引擎了。
1.elasticsearch 是什么?
elasticsearch是一个基于apache lucene(是java语言编写的全文搜索引擎)的分布式的搜索和分析引擎。它是一个文档类型的数据库和mongdb类似,
elasticsearch在apache luence基础上,进行了封装和实现,暴露了简单的restful的接口,相对于直接使用lucene而言,用户可以轻松的通过es的http接口,来完成自己的搜索功能。
es的优点
- 基于倒排索引,提供实时搜索的功能。
- 高可用和容错机制,es可以水平扩容成百上千的节点,节点分:master节点(由众多master-eligible节点选举出一个来),候选master节点master-eligible (可以有多个),普通的data节点(多个)。master节点只有一个, 节点可以既可以是master节点,又可以是data节点 ,但是一般生产环境中,一般master节点不会作为data节点,为了减少master的负载。master负责管理整个es集群,具体负责索引的创建,删除,跟踪各个节点的状态,决定分片的路由到哪个节点等等。
es的索引可以有多个shard,每个shard可以有多个replication,而且一般shard和replication都分散在多个node中,避免单节点故障。