tft每日頭條

 > 生活

 > ansible 微服務

ansible 微服務

生活 更新时间:2024-12-29 06:42:03

一、全文搜索概念

什麼是全文搜索引擎?

百度百科中的定義

全文搜索引擎是目前廣泛應用的主流搜索引擎。它的工作原理是計算機索引程序通過掃描文章中的每一個詞,對每一個詞建立一個索引,指明該詞在文章中出現的次數和位置,當用戶查詢時,檢索程序就根據事先建立的索引進行查找,并将查找的結果反饋給用戶的檢索方式。這個過程類似于通過字典中的檢索字表查字的過程。

從定義中我們已經可以大緻了解全文檢索的思路了,為了更詳細的說明,我們先從生活中的數據說起。

我們生活中的數據總體分為兩種:結構化數據非結構化數據

  • 結構化數據: 指具有固定格式或有限長度的數據,如數據庫,元數據等。
  • 非結構化數據: 非結構化數據又可稱為全文數據,指不定長或無固定格式的數據,如郵件,word文檔等。

當然有的地方還會有第三種:半結構化數據,如XML,HTML等,當根據需要可按結構化數據來處理,也可抽取出純文本按非結構化數據來處理。

根據兩種數據分類,搜索也相應的分為兩種:結構化數據搜索和非結構化數據搜索。

對于結構化數據,我們一般都是可以通過關系型數據庫(mysql,oracle等)的 table 的方式存儲和搜索,也可以建立索引。

2、綜合比較

另外,我們在從以下幾個方面來分析下:

  • 近幾年的流行趨勢
  • 我們查看一下這兩種産品的Google搜索趨勢。谷歌趨勢表明,與 Solr 相比,Elasticsearch具有很大的吸引力,但這并不意味着Apache Solr已經死亡。雖然有些人可能不這麼認為,但Solr仍然是最受歡迎的搜索引擎之一,擁有強大的社區和開源支持。

ansible 微服務(微服務系列之一)1

  • 安裝和配置
  • 與Solr相比,Elasticsearch易于安裝且非常輕巧。此外,您可以在幾分鐘内安裝并運行Elasticsearch。
  • 但是,如果Elasticsearch管理不當,這種易于部署和使用可能會成為一個問題。基于JSON的配置很簡單,但如果要為文件中的每個配置指定注釋,那麼它不适合您。
  • 總的來說,如果您的應用使用的是JSON,那麼Elasticsearch是一個更好的選擇。否則,請使用Solr,因為它的schema.xml和solrconfig.xml都有很好的文檔記錄。
  • 社區
  • Solr擁有更大,更成熟的用戶,開發者和貢獻者社區。ES雖擁有的規模較小但活躍的用戶社區以及不斷增長的貢獻者社區。
  • Solr是真正的開源社區代碼。任何人都可以為Solr做出貢獻,并且根據優點選出新的Solr開發人員(也稱為提交者)。Elasticsearch在技術上是開源的,但在精神上卻不那麼重要。任何人都可以看到來源,任何人都可以更改它并提供貢獻,但隻有Elasticsearch的員工才能真正對Elasticsearch進行更改。
  • Solr貢獻者和提交者來自許多不同的組織,而Elasticsearch提交者來自單個公司。
  • 成熟度
  • Solr更成熟,但ES增長迅速,我認為它穩定。
  • 文檔
  • Solr在這裡得分很高。它是一個非常有據可查的産品,具有清晰的示例和API用例場景。 Elasticsearch的文檔組織良好,但它缺乏好的示例和清晰的配置說明。

五、總結

選型準則概括:

  • 由于易于使用,Elasticsearch在新開發者中更受歡迎。但是,如果您已經習慣了與Solr合作,請繼續使用它,因為遷移到Elasticsearch沒有特定的優勢。
  • 如果除了搜索文本之外還需要它來處理分析查詢,Elasticsearch是更好的選擇。
  • 如果需要分布式索引,則需要選擇Elasticsearch。對于需要良好可伸縮性和性能的雲和分布式環境,Elasticsearch是更好的選擇。
  • 兩者都有良好的商業支持(咨詢,生産支持,整合等)
  • 兩者都有很好的操作工具,盡管Elasticsearch因其易于使用的API而更多地吸引了DevOps人群,因此可以圍繞它創建一個更加生動的工具生态系統。
  • Elasticsearch在開源日志管理用例中占據主導地位,許多組織在Elasticsearch中索引它們的日志以使其可搜索。雖然Solr現在也可以用于此目的,但它隻是錯過了這一想法。
  • Solr仍然更加面向文本搜索。另一方面,Elasticsearch 通常用于過濾和分組 - 分析查詢工作負載 - 而不一定是文本搜索。Elasticsearch 開發人員在 Lucene 和 Elasticsearch 級别上投入了大量精力使此類查詢更高效(降低内存占用和CPU使用)。因此,對于不僅需要進行文本搜索,而且需要複雜的搜索時間聚合的應用程序,Elasticsearch是一個更好的選擇。
  • Elasticsearch更容易上手,一個下載和一個命令就可以啟動一切。Solr傳統上需要更多的工作和知識,但Solr最近在消除這一點上取得了巨大的進步,現在隻需努力改變它的聲譽。
  • 在性能方面,它們大緻相同。我說“大緻”,因為沒有人做過全面和無偏見的基準測試。對于95%的用例,任何一種選擇在性能方面都會很好,剩下的5%需要用它們的特定數據和特定的訪問模式來測試這兩種解決方案。
  • 從操作上講,Elasticsearch使用起來比較簡單 - 它隻有一個進程。Solr在其類似Elasticsearch的完全分布式部署模式SolrCloud中依賴于Apache ZooKeeper。ZooKeeper是超級成熟,超級廣泛使用等等,但它仍然是另一個活躍的部分。也就是說,如果您使用的是Hadoop,HBase,Spark,Kafka或其他一些較新的分布式軟件,您可能已經在組織的某個地方運行ZooKeeper。
  • 雖然Elasticsearch内置了類似ZooKeeper的組件Xen,但ZooKeeper可以更好地防止有時在Elasticsearch集群中出現的可怕的裂腦問題。公平地說,Elasticsearch開發人員已經意識到這個問題,并緻力于改進Elasticsearch的這個方面。
  • 如果您喜歡監控和指标,那麼使用Elasticsearch,您将會進入天堂。這個東西比新年前夜在時代廣場可以擠壓的人有更多的指标!Solr暴露了關鍵指标,但遠不及Elasticsearch那麼多。

總之,兩者都是功能豐富的搜索引擎,隻要設計和實現得當,它們或多或少都能提供相同的性能。本篇文章的總體内容大緻如下圖,該圖由園友ReyCG精心繪制并提供。

ansible 微服務(微服務系列之一)2

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved