目前市面上流行的搜索引擎軟件,主流的就兩款:Elasticsearch 和 Solr,這兩款都是基于 Lucene 搭建的,可以獨立部署啟動的搜索引擎服務軟件。由于內核相同,所以兩者除了服務器安裝、部署、管理、集群以外,對于數據的操作 修改、添加、保存、查詢等等都十分類似。
<br/>
:-: **Elasticsearch與Solr對比**
| 特征 | Solr/SolrCloud | Elasticsearch |
| --- | --- | --- |
| 社區與開發者 | Apache軟件基金和社區支持 | 單一商業實體及其員工 |
| 節點發現 | Apache Zookeeper,在大量項目中成熟且經過實戰測試 | Zen內置于Elasticsearch本身,需要專用的主節點才能|
| 碎片放置 | 本質上是靜態,需要手動工作來遷移分片,從Solr 7開始- AutoscalingAPI允許一-些動態操作 | 動態,可以根據群集狀態按需移動分片 |
| 高速緩存 | 全局, 每個段更改無效 |每段,更適合動態更改數據 |
| 分析弓|擎性能 | 非常適合精確計算的靜態數據 | 結果的準確性取決于數據放置 |
| 全文搜承功能 | 基于Lucene的語言分析,多建議,拼寫檢查,豐富的高亮顯示支持 | 基于Lucene的語言分析,單一建議API實現,高亮顯示重新計算 |
| DevOps支持 | 尚未完全,但即將到來 | 非常好的API |
| 非平面數據處理 | 嵌套文檔和父子支持 | 嵌套和對象類型的自然支持允許幾乎無限的嵌套和父-子支持 |
| 查詢DSL | JSON (有限),XML (有限)或URL參數 | JSON |
| 索引/收集領導控制 | 領導者安置控制和領導者重新平衡甚至可以節點上的負載 | 不可能 |
| 機器學習 | 內置-在流聚合之上,專注于邏輯回歸和學習排名貢獻模塊 | 商業功能,專注于異常和異常值以及時間序列數據 |
<br/>
**Elasticsearch與Solr如何選擇**
Elasticsearch 和 Solr 都是開源搜索引擎,那么我們在使用時該如何選擇呢?
* Google 搜索趨勢結果表明,與 Solr 相比,Elasticsearch 具有很大的吸引力,但這并不意味著 Apache Solr 已經死亡。雖然有些人可能不這么認為,但 Solr 仍然是最受歡迎的搜索引擎之一,擁有強大的社區和開源支持。
* 與 Solr 相比,Elasticsearch 易于安裝且非常輕巧。此外,你可以在幾分鐘內安裝并運行Elasticsearch。但是,如果 Elasticsearch 管理不當,這種易于部署和使用可能會成為一個問題。基于 JSON 的配置很簡單,但如果要為文件中的每個配置指定注釋,那么它不適合您。總的來說,如果你的應用使用的是 JSON,那么 Elasticsearch 是一個更好的選擇。否則,請使用 Solr,因為它的 schema.xml 和 solrconfig.xml 都有很好的文檔記錄。
* Solr 擁有更大,更成熟的用戶,開發者和貢獻者社區。ES 雖擁有的規模較小但活躍的用戶社區以及不斷增長的貢獻者社區。Solr 貢獻者和提交者來自許多不同的組織,而 Elasticsearch 提交者來自單個公司。
* Solr 更成熟,但 ES 增長迅速,更穩定。
* Solr 是一個非常有據可查的產品,具有清晰的示例和 API 用例場景。 Elasticsearch 的 文檔組織良好,但它缺乏好的示例和清晰的配置說明。
那么,到底是 Solr 還是 Elasticsearch?有時很難找到明確的答案。無論您選擇 Solr 還是 Elasticsearch,首先需要了解正確的用例和未來需求。總結他們的每個屬性。
* 由于易于使用,Elasticsearch 在新開發者中更受歡迎。一個下載和一個命令就可以啟動一切。
* 如果除了搜索文本之外還需要它來處理分析查詢,Elasticsearch 是更好的選擇。
* 如果需要分布式索引,則需要選擇 Elasticsearch。對于需要良好可伸縮性和以及性能分布式環境,Elasticsearch 是更好的選擇。
* Elasticsearch 在開源日志管理用例中占據主導地位,許多組織在 Elasticsearch 中索引它們的日志以使其可搜索。
* 如果你喜歡監控和指標,那么請使用 Elasticsearch,因為相對于 Solr,Elasticsearch 暴露了更多的關鍵指標。
**Elasticsearch 應用案例:**
* GitHub: 2013 年初,拋棄了 Solr,采取 Elasticsearch 來做 PB 級的搜索。“GitHub 使用Elasticsearch 搜索 20TB 的數據,包括 13 億文件和 1300 億行代碼”。 ? 維基百科:啟動以 Elasticsearch 為基礎的核心搜索架構
* SoundCloud:“SoundCloud 使用 Elasticsearch 為 1.8 億用戶提供即時而精準的音樂搜索服務”。
* 百度:目前廣泛使用 Elasticsearch 作為文本數據分析,采集百度所有服務器上的各類指標數據及用戶自定義數據,通過對各種數據進行多維分析展示,輔助定位分析實例異常或業務層面異常。目前覆蓋百度內部 20 多個業務線(包括云分析、網盟、預測、文庫、直達號、錢包、風控等),單集群最大 100 臺機器,200 個 ES 節點,每天導入30TB+數據。
* 新浪:使用 Elasticsearch 分析處理 32 億條實時日志。
* 阿里:使用 Elasticsearch 構建日志采集和分析體系。
* Stack Overflow:解決 Bug 問題的網站,全英文,編程人員交流的網站。
- Elasticsearch是什么
- 全文搜索引擎
- Elasticsearch與Solr
- 數據結構
- 安裝Elasticsearch
- Linux單機安裝
- Windows單機安裝
- 安裝Kibana
- Linux安裝
- Windows安裝
- es基本語句
- 索引操作
- 文檔操作
- 映射操作
- 高級查詢
- es-JavaAPI
- maven依賴
- 索引操作
- 文檔操作
- 高級查詢
- es集群搭建
- Linux集群搭建
- Windows集群搭建
- 核心概念
- 索引(Index)
- 類型(Type)
- 文檔(Document)
- 字段(Field)
- 映射(Mapping)
- 分片(Shards)
- 副本(Replicas)
- 分配(Allocation)
- 系統架構
- 分布式集群
- 單節點集群
- 故障轉移
- 水平擴容
- 應對故障
- 路由計算
- 分片控制
- 寫流程
- 讀流程
- 更新流程
- 多文檔操作流程
- 分片原理
- 倒排索引
- 文檔搜索
- 動態更新索引
- 近實時搜索
- 持久化變更
- 段合并
- 文檔分析
- 內置分析器
- 分析器使用場景
- 測試分析器
- 指定分析器
- 自定義分析器
- 文檔處理
- 文檔沖突
- 樂觀并發控制
- 外部系統版本控制
- es優化
- 硬件選擇
- 分片策略
- 合理設置分片數
- 推遲分片分配
- 路由選擇
- 寫入速度優化
- 批量數據提交
- 優化存儲設備
- 合理使用合并
- 減少Refresh的次數
- 加大Flush設置
- 減少副本的數量
- 內存設置
- 重要配置
- es常見問題
- 為什么要使用Elasticsearch
- master選舉流程
- 集群腦裂問題
- 索引文檔流程
- 更新和刪除文檔流程
- 搜索流程
- ES部署在Linux時的優化方法
- GC方面ES需要注意的點
- ES對大數據量的聚合實現
- 并發時保證讀寫一致性
- 字典樹
- ES的倒排索引
- Spring Data Elasticsearch
- 環境搭建
- 索引操作
- 文檔操作