Elasticsearch 是一个兼有搜索引擎和NoSQL数据库功能的开源系统,基于Java/Lucene构建,能够用于全文搜索,结构化搜索以及近实时分析。能够说Lucene是当今最早进,最高效的全功能开源搜索引擎框架。 说明: Lucene:只是一个框架,要充分利用它的功能,须要使用JAVA,而且在程序中集成Lucene,学习成本高,Lucene确实很是复杂。 Elasticsearch 是 面向文档型数据库,这意味着它存储的是整个对象或者 文档,它不但会存储它们,还会为他们创建索引,这样你就能够搜索他们了html
目录:node
应用场景web
solr VS ESmongodb
核心概念数据库
关系数据库 ⇒ 数据库 ⇒ 表 ⇒ 行 ⇒ 列(Columns)
Elasticsearch ⇒ 索引 ⇒ 类型 ⇒ 文档 ⇒ 字段(Fields)
ES模块结构json
$ curl -XPUT http://localhost:9200/twitter/ -d ' index : number_of_shards : 3 number_of_replicas : 2
每一个操做会自动路由主碎片所在的节点,在上面执行操做,而且同步到其余复制节点,经过使用“non blocking IO”模式全部复制的操做都是并行执行的,也就是说若是你的节点的副本越多,你网络上的流量消耗也会越大。复制节点一样接受来自外面的读操做,意义就是你的复制节点越多,你的索引的可用性就越强,对搜索的可伸缩行就更好,可以承载更多的操做服务器
分片示例网络
PUT /blogs { "settings" : { "number_of_shards" : 3, "number_of_replicas" : 1 } }
集群示例图以下: (此时集群健康状态为: yellow 三个从分片尚未被分配到节点上)架构
PUT /blogs/_settings { "number_of_replicas" : 2 }
如今 blogs 的索引总共有9个分片:3个主分片和6个从分片, 又会变成一个节点一个分片的状态了,最终获得了三倍搜索性能的三节点集群app