ELasticSearch——ElasticScarch 概述及安裝
1、Elastic Stack 簡介
早期 Elastic Stack 名為 ELK,對應Elasticsearch,Logstash 和 Kibana這三個開源軟體,但由于在做日志收集時Logstash過于重量級,因此官方又開發了各種Beat組件,比如FileBeat,PackBeat等等,隨著這些角色的加入ELK更名位Elastic Stack,
Elastic Stack 能夠安全可靠地獲取任何來源、任何格式的資料,然后實時地對資料進行搜索、分析和可視化,
官網地址:https://www.elastic.co/cn/
官方檔案:https://www.elastic.co/guide/index.html

2、ElasticSearch 概述
2.1、Lucene 簡介
Lucene是Apache軟體基金會 Jakarta專案組的一個子專案,提供了一個簡單卻強大的應用程式介面,能夠做全文索引和搜尋,在Java開發環境里Lucene是一個成熟的免費開源工具,就其本身而言,Lucene是當前以及最近幾年最受歡迎的免費Java資訊檢索程式庫,但 Lucene只是一個提供全文搜索功能類別庫的核心工具包,而真正使用它還需要一個完善的服務框架搭建起來進行應用,
人們經常提到資訊檢索程式庫,雖然與搜索引擎有關,但不應該將資訊檢索程式庫與搜索引擎相混淆,
Lucene是一個全文檢索引擎的架構,那什么是全文搜索引擎?
全文搜索引擎是名副其實的搜索引擎,國外具代表性的有Google、FastU/AllTheWeb、AltaVista、Inktomi、Teoma、WiseNut等,國內著名的有百度( Baidu ),它們都是通過從互聯網上提取的各個網站的資訊(以網頁文字為主)而建立的資料庫中,檢索與用戶查詢條件匹配的相關記錄,然后按一定的排列順序將結果回傳給用戶,因此他們是真正的搜索引擎,
從搜索結果來源的角度,全文搜索引擎又可細分為兩種,一種是擁有自己的檢索程式( Indexer ),俗稱"蜘蛛"”(Spider )程式或"機器人" ( Robot )程式,并自建網頁資料庫,搜索結果直接從自身的資料庫中呼叫,如上面提到的7家引擎;另一種則是租用其他引擎的資料庫,并按自定的格式排列搜索結果,如Lycos引擎,
2.2、ElasticSearch 概述
ElasticSearch 是什么
Elasticsearch(簡稱ES)是一個基于Apache Lucene的搜索服務器,是一個分布式、高擴展、高實時、Restful 風格的全文搜索和資料分析引擎,Elasticsearch是用Java語言開發的,這使Elasticsearch能夠在不同的平臺上運行,并作為Apache許可條款下的開放原始碼發布,是一種流行的企業級搜索引擎,
ElasticSearch 官網:https://www.elastic.co/cn/elasticsearch/
ElasticSearch 特性
Elasticsearch的一般特性如下 :
- Elasticsearch可擴展高達PB級的結構化和非結構化資料,
- Elasticsearch可以用來替代MongoDB和RavenDB等做檔案存盤,
- Elasticsearch使用非標準化來提高搜索性能,
- Elasticsearch是受歡迎的企業搜索引擎之一,目前被許多大型組織使用,如Wikipedia,The Guardian,StackOverflow,GitHub等,
- Elasticsearch是開放源代碼,可在Apache許可證版本2.0下提供,
參考鏈接:https://www.bootwiki/elasticsearch/elasticsearch-tutorial.html
2.3、ElasticSearch 和 Solr 的對比及選型
Solr 概述
Solr是Apache下的一個頂級開源專案,采用ava開發,它是基于Lucene的全文搜索服務器,Solr提供了比Lucene更為豐富的查詢語言,同時實作了可配置、可擴展,并對索引、搜索性能進行了優化,
Solr可以獨立運行,運行在Jetty、Tomcat等這些Servlet容器中,Solr 索引的實作方法很簡單,用POST方法向Solr服務器發送一個描述Field及其內容的XML檔案,Solr根據xml檔案添加、洗掉、更新索引,Solr搜索只需要發送HTTPGET請求,然后對Solr回傳Xml.,json等格式的查詢結果進行決議,組織頁面布局,Solr不提供構建UI的功能,Solr提供了一個管理界面,通過管理界面可以查詢Solr的配置和運行情況,
Solr是基于lucene開發企業級搜索服務器,實際上就是封裝了lucene,
Solr是一個獨立的企業級搜索應用服務器,它對外提供類似于Web-service的API介面,用戶可以通過http請求,向搜索引擎服務器提交一定格式的檔案,生成索引;也可以通過提出查找請求,并得到回傳結果,
ElasticSearch 和 Solr 的對比
當單純的對已有資料進行索引時,Solr更快
當實時建立索引時,Solr會產生io阻塞,查詢性能較差,Elasticsearch具有明顯的優勢,
隨著資料量的增加,Solr的搜索效率會變得更低,而Elasticsearch卻沒有明顯的變化,
Solr利用Zookeeper進行分布式管理,而Elasticsearch自身帶有分布式協調管理功能,
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 的檔案組織良好,但它缺乏好的示例和清晰的配置說明,
ElasticSearch 和 Solr 的技術選型
有時很難找到明確的答案,無論您選擇Solr還是Elasticsearch,首先需要了解正確的用例和未來需求,總結他們的每個屬性,
由于易于使用,Elasticsearch在新開發者中更受歡迎,一個下載和一個命令就可以啟動一切,
如果除了搜索文本之外還需要它來處理分析查詢,Elasticsearch是更好的選擇,
如果需要分布式索引,則需要選擇Elasticsearch,對于需要良好可伸縮性和以及性能分布式環境,Elasticsearch是更好的選擇,
Elasticsearch在開源日志管理用例中占據主導地位,許多組織在Elasticsearch中索引它們的日志以使其可搜索,
如果你喜歡監控和指標,那么請使用Elasticsearch,因為相對于Solr,Elasticsearch暴露了更多的關鍵指標,
3、ElasticSearch 下載安裝(Windows)
1、進入官網ElasticSearch 官網:https://www.elastic.co/cn/elasticsearch/
下載最新版本:進入官網后,選擇作業系統,點擊下載

下載歷史版本:點擊右側的 View past releases,然后再選擇自己想要的版本,
2、下載后解壓安裝包
解壓后的檔案目錄如下圖:

目錄說明:
- bin:可執行檔案的存放目錄
- config:組態檔的存放目錄
- log4j2.properties:日志組態檔
- jvm.options:java 虛擬機組態檔
- elasticsearch.yml:ES組態檔
- jdk:存放適合當前Elasticsearch版本的jdk
- lib:參考的相關庫的存放目錄,elasticsearch.jar本身也放于該目錄,
- logs:默認的日志存放目錄,
- modules:功能模塊的存放目錄
- plugins:插件存放目錄
3、啟動 ElasticSearch
打開bin目錄,雙擊elasticsearch.bat:

兩個埠:
9300埠為Elasticsearch集群間組件的通信埠,9200埠為瀏覽器訪問的http.協議RESTful埠,
訪問請求:http://localhost:9200/,如果出現如下資訊,說明ES啟動成功!

上面顯示了 ElasticSearch 的配置資訊,
4、啟動失敗可能的原因

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/345863.html
標籤:其他
上一篇:【游戲開發實戰】用Go語言寫一個服務器,實作與Unity客戶端通信(Golang | Unity | Socket | 通信 | 教程 | 附工程原始碼)
