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