了解了ES的使用場景,ES的研究、使用、推廣才更有價值和意義。
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(www.rsyslog.com),Logstash(www.elastic.co/products/logstash),或Apache Flume(http://flume.apache.org)。
搜索和可視化界面分析這些日志,你可以使用Kibana(www.elastic.co/產品/ kibana)。
為什么那么多工具適配Elasticsearch?主要原因如下:
1)Elasticsearch是開源的。
2)Elasticsearch提供了JAVA API接口。
3)Elasticsearch提供了RESTful API接口(不管程序用什么語言開發,任何程序都可以訪問)
4)更重要的是,REST請求和應答是典型的JSON(JavaScript對象 符號)格式。通常情況下,一個REST請求包含一個JSON文件,其回復都 也是一個JSON文件。
作者:銘毅天下