ElasticSearch的使用場景問題?
這麼用完全沒問題,實現起來還簡單。
實際還用用MySQL binlog同步的方案,但實現起來複雜,對複雜業務的支援不夠友好。
先說結論:作為demo這麼用是沒問題的。這種方案的問題就是你的程式要保證mysql的事務和es保證一致,比如透過程式對mysql成功而es插入失敗的場景進行事務回滾等處理。
一個比較大的問題其實是es的穩定性問題。由於其分散式特性,在偶爾gc和其他自我協調的影響下,會造成客戶端(應用)訪問tp99比較高,在實際toC的業務中,這是很大的硬傷。
如果是隻做一個demo的話,還不如直接把es當成資料庫用,缺點就是不能支援多表的關聯查詢。
資料如何寫入到es
1。canal訂閱mysql日誌以訊息佇列的方式非同步寫入es
2。與mysql的事務放一起同步寫入es
3。 mysql事務提交後發一個mq訊息讓消費者寫入,其實和1是一樣的,都是非同步
es中存哪些資料呢
1。和表一樣,顯然佔空間比較大
2。只保留可搜尋的欄位,比1的各方面都好,但是查到結果後要用一組id再去mysql查一下
搜尋流程是怎麼樣的
1。es資料直接做介面返回值,顯然es和mysql資料必須一樣才行,同步要做好
2。es返回的資料再用id查一下mysql,資料的準確性肯定會好一些,但是多了一步db查詢
1、場景—:使用Elasticsearch作為主要的後端
傳統專案中,搜尋引擎是部署在成熟的資料儲存的頂部,以提供快速且相關的搜尋能力。這是因為早期的搜尋引擎不能提供耐用的儲存或其他經常需要的功能,如統計。
Elasticsearch是提供持久儲存、統計等多項功能的現代搜尋引擎。
如果你開始一個新專案,我們建議您考慮使用Elasticsearch作為唯一的資料儲存,以幫助保持你的設計儘可能簡單。
此種場景不支援包含頻繁更新、事務(transaction)的操作。
舉例如下:新建一個部落格系統使用es作為儲存。
1)我們可以向ES提交新的博文;
2)使用ES檢索、搜尋、統計資料。
ES作為儲存的優勢:
如果一臺伺服器出現故障時會發生什麼?你可以透過複製 資料到不同的伺服器以達到容錯的目的。
注意:
整體架構設計時,需要我們權衡是否有必要增加額外的儲存。
2、場景二:在現有系統中增加elasticsearch
由於ES不能提供儲存的所有功能,一些場景下需要在現有系統資料儲存的基礎上新增ES支援。
舉例1:ES不支援事務、複雜的關係(至少1。X版本不支援,2。X有改善,但支援的仍然不好),如果你的系統中需要上述特徵的支援,需要考慮在原有架構、原有儲存的基礎上的新增ES的支援。
舉例2:如果你已經有一個在執行的複雜的系統,你的需求之一是在現有系統中新增檢索服務。一種非常冒險的方式是重構系統以支援ES。而相對安全的方式是:將ES作為新的元件新增到現有系統中。
如果你使用瞭如下圖所示的SQL資料庫和ES儲存,你需要找到一種方式使得兩儲存之間實時同步。需要根據資料的組成、資料庫選擇對應的同步外掛。可供選擇的外掛包括:
1)mysql、oracle選擇 logstash-input-jdbc 外掛。
2)mongo選擇 mongo-connector工具。
假設你的線上零售商店的產品資訊儲存在SQL資料庫中。 為了快速且相關的搜尋,你安裝Elasticsearch。
為了索引資料,您需要部署一個同步機制,該同步機制可以是Elasticsearch外掛或你建立一個自定義的服務。此同步機制可以將對應於每個產品的所有資料和索引都儲存在Elasticsearch,每個產品作為一個document儲存(這裡的document相當於關係型資料庫中的一行/row資料)。
當在該網頁上的搜尋條件中輸入“使用者的型別”,店面網路應用程式透過Elasticsearch查詢該資訊。 Elasticsearch返回符合標準的產品documents,並根據你喜歡的方式來分類文件。 排序可以根據每個產品的被搜尋次數所得到的相關分數,或任何儲存在產品document資訊,例如:最新最近加入的產品、平均得分,或者是那些插入或更新資訊。 所以你可以只使用Elasticsearch處理搜尋。這取決於同步機制來保持Elasticsearch獲取最新變化。
3、場景三:使用elasticsearch和現有的工具
在一些使用情況下,您不必寫一行程式碼就能透過elasticssearch完成一項工作。很多工具都可以與Elasticsearch一起工作,所以你不必到你從頭開始編寫。
例如,假設要部署一個大規模的日誌框架儲存,搜尋,並分析了大量的事件。
如圖下圖,處理日誌和輸出到Elasticsearch,您可以使用日誌記錄工具,如rsyslog(The rocket-fast Syslog Server - rsyslog),Logstash(www。elastic。co/products/logstash),或Apache Flume(Welcome to Apache Flume)。
搜尋和視覺化介面分析這些日誌,你可以使用Kibana(www。elastic。co/產品/ kibana)。
為什麼那麼多工具適配Elasticsearch?主要原因如下:
1)Elasticsearch是開源的。
2)Elasticsearch提供了JAVA API介面。
3)Elasticsearch提供了RESTful API介面(不管程式用什麼語言開發,任何程式都可以訪問)
4)更重要的是,REST請求和應答是典型的JSON(JavaScript物件 符號)格式。通常情況下,一個REST請求包含一個JSON檔案,其回覆都 也是一個JSON檔案。
連結:
https://
blog。csdn。net/laoyang36
0/article/details/52227541
Elasticsearch 最佳實踐!
超詳細 116 頁 Elasticsearch 實戰文件!高畫質可下載