1、ElasticSearch
ElasticSearch是個開源的分佈式的搜索引擎,它能夠近乎實時的存儲、檢索數據;java
Elasticsearch也使用Java開發並使用Lucene做爲其核心來實現全部索引和搜索的功能,可是它的目的是經過簡單的RESTful API來隱藏Lucene的複雜性,從而讓全文搜索變得簡單。git
ElasticSearch提供javaAPI,使用者能夠經過javaAPI調用,可是7.0之後不會提供普通javaAPI,須要使用高級APIrest-high-level調用。github
2、Lucene
說到ES就不得不提Lucene,Lucene是一個開放源代碼的全文檢索引擎工具包,它不是一個完整的搜索引擎,並且一個全文搜索引擎的架構。redis
Lucene之因此比傳統的關係型數據庫檢索的效率高,由於其使用的事倒排索引,這種索引表中的每一項都包括一個屬性值和具備該屬性值的各記錄的地址。spring
3、ElasticSearch和Solr的區別
1)Solr創建索引時候,搜索效率降低,實時搜索效率不高,es實時搜索效率高數據庫
2)Solr利用Zookeeper進行分佈式管理,而Elasticsearch自身帶有分佈式協調管理功能。json
3)Solr支持更多格式的數據,好比JSON、XML、CSV,而Elasticsearch僅支持json文件格式。後端
4)Solr官方提供的功能更多,而Elasticsearch自己更注重於核心功能,高級功能多有第三方插件提供設計模式
5)Solr在傳統的搜索應用中表現好於Elasticsearch,但在處理實時搜索應用時效率明顯低於Elasticsearch。mybatis
6)Solr是傳統搜索應用的有力解決方案,但Elasticsearch更適用於新興的實時搜索應用
7)Solr每次變更數據時會重新更新索引庫, Elasticsearch徹底支持 Apache Lucene 的接近實時的搜索。
4、ElasticSearch基本概念
cluster
-表明一個集羣,集羣中有多個節點,其中有一個爲主節點,這個主節點經過選舉產生的,主節點僅是對內部來講。es的一個概念是去中心化,字面意思就是沒有中心節點,這是對於集羣外部來講的,從外部看來你能夠與任何一個節點通訊。
-主節點的職責是負責管理集羣的狀態(節點的發現和刪除),包括管理分片的狀態,副本的狀態
-主須要同一個網段內啓動多個es,默認狀況下es會自動發現同一個網段相同cluster.name的節點 自動組成集羣(實際爲防止腦裂,通常會禁止自動發現)
-集羣的查看狀態:http://127.0.0.1:9200/_cluster/health?pretty
shards
-表明索引分片,es能夠把一個完成的索引分紅多個分片,這樣的好處能夠把一個索引分佈到不用的節點上,構成分佈式搜索。分片的數量只能在索引建立前指定,而且不能修改。默認分片有5個inde.number_of_shards: 5
-能夠建立索引時指定例如:
curl -XPUT -H "Content-Type:application/json" http://127.0.0.1:9200/yanbin -d '{"settings":{"number_of_shards":3}}'
replicas
-表明索引副本,es能夠給索引設置副本,副本的做用一是提升系統的容錯性,當某個節點某個分片損壞或丟失時能夠從副本恢復。二是提升查詢效率,es會自動對搜索請求作負載。默認分片有1個inde.number_of_replicas: 5
curl -XPUT -H "Content-Type:application/json" http://127.0.0.1:9200/yanbin/_settings -d '{"settings":{"number_of_replicas":3}}' 注:PUT添加/更新 POST添加_settings 修改設置項
recovery
-表明數據恢復或數據從新分佈,es有節點退出宕機或者添加時會好久負載對索引分片重新分配,掛掉的節點從新啓動時也會進行數據恢復。
gateway
-表明es索引的持久化存儲方式,es默認是先把索引放到內存中,當內存滿了的時候再持久化到硬盤。當這個es集羣關閉或者重啓時就會從gateway中讀取索引數據。gateway支持多種存儲,默認本地磁盤文件,hadoop 中hdfs 等
discovery.zen
-表明es自動發現同網段節點機制,它先經過廣播須要存在的節點,再經過多播協議進行節點之間通訊,同時支持點對點的交互。
-若是集羣不一樣網段節點,禁用自動發現機制 discovery.zen.ping.multicast.enabled:false
設置新節點在啓動時可以被發現的主節點列表。 discovery.zen.ping.multicast.unicast.hosts:["192.169.1.1","192.169.1.2"]
transport:
-表明內部節點或集羣與客戶端的交互方式,默認內部使用的TCP協議進行交互。同時支持https(json),merchand,kafka,zeroMq等
settings修改索引庫默認配置
mapping索引庫的索引字段名稱和數據進行定義
RuoYiPlus開源
本項目由 SMP 多商戶權限管理系統 + API 接口服務組成,是在開源項目 RuoYi4.0(若依) 的基礎上升級調整的微服務體系,項目基於 SpringBoot2.x,springcloudG 版本 eureka、hystrix、feign、config、gateway 微服務架構,集成 redis、tk.mybatis、lombok、各類設計模式等,是可選性後臺管理系統或後端接口服務。
源碼地址
- Gitee(主):https://gitee.com/aimeng2017/RuoYi-plus
- Github(輔):https://github.com/zebra-ruoyi-plus/ruoyi-plus