1. 程式人生 > 程式設計 >ElasticSearch初探-安裝

ElasticSearch初探-安裝

寫在前面的話

經過一個半月的不懈努力, 小說專案已經完成了一大半, 前端介面以及api對接全部完成, 後臺系統完成一小部分功能。

記得當初做這個專案的初衷是因為感覺自己所學太雜, 而且自己對一些技術如Kafka, ES很感興趣,所以想通過這個專案對這些東西進行融合,加深對其印象

在專案中, 我採用ElasticSearch來處理專案中的小說搜尋

Elasticsearch 是什麼

  • Elasticsearch是一個基於Apache Lucene(TM)的實時分散式搜尋和分析引擎,但是如果要直接使用lucene,卻非常困難。 因為Lucene只是一個庫, 想要使用它,你必須使用Java來作為開發語言並將其直接整合到你的應用中,更糟糕的是,Lucene非常複雜,你需要深入瞭解檢索的相關知識來理解它是如何工作的。。。

  • Elasticsearch也使用Java開發並使用Lucene作為其核心來實現所有索引和搜尋的功能,但是它的目的是通過簡單的RESTful API來隱藏Lucene的複雜性,從而讓全文搜尋變得簡單

  • Elasticsearch可以很輕鬆的橫向擴充套件, 可支援PB級的結構和非結構資料處理

關於Elasticsearch的應用場景

  • 海量資料的分析
  • 站內搜尋引擎
  • 資料倉庫

對ES(Elasticsearch)的瞭解

  1. 加深對ES的理解的最好方式就是執行它, 那麼我們先來安裝

  2. 安裝環境

CentOS 7

JDK 1.8 (必須)

ES-6.8.2 和JDK的版本是對應關係

  • 下載

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.2.tar.gz

  • 下載完成後, 解壓

tar -zxvf elasticsearch-6.8.2.tar.gz

  • 建立使用者組, 授權

ES不能使用root使用者來啟動

groupadd elasticsearch
useradd -r -g elasticsearch elasticsearch
chown -Rf elasticsearch:elasticsearch elasticsearch-6.8.2
複製程式碼
  • 啟動ES

./bin/elasticsearch

  1. ES預設只能通過本地來執行, 如果需要修改, 修改配置檔案 elasticsearch.yml

network.host: 0.0.0.0

  1. 如果想要在後臺啟動, 可以通過以下命令

nohup ./bin/elasticsearch &

./bin/elasticsearch -d

  • 驗證是否啟動

ES預設監聽9200埠

curl 'http://localhost:9200/'

{
  "name" : "7J76WwT","cluster_name" : "elasticsearch","cluster_uuid" : "Wsfbm6vLS2uOyoDqWVppdw","version" : {
    "number" : "5.5.2","build_hash" : "b2f0c09","build_date" : "2017-08-14T12:33:14.154Z","build_snapshot" : false,"lucene_version" : "6.6.0"
  },"tagline" : "You Know,for Search"
}

複製程式碼

能夠輸出類似的內容說明已經啟動成功

到此, 關於ES的簡介和單機版安裝就完成了

擴充套件

按照上述的安裝方式, 在遠端連線ES的時候會出現出現以下問題, 我們來解決下

當我們設定 network.host: 0.0.0.0 在啟動過程中會出現以下問題

max file descriptors [4096] for elasticsearch process is too low,increase to at least [65536]

這裡錯誤是每個程式最大同時開啟檔案數太小

修改/etc/security/limits.conf檔案,增加配置,需要重新進行登入才能生效

*               soft    nofile          65536
*               hard    nofile          65536
複製程式碼

可以通過以下命令來檢視

ulimit -Hn
ulimit -Sn
複製程式碼

max virtual memory areas vm.max_map_count [65530] is too low,increase to at least [262144]

修改/etc/sysctl.conf檔案,增加配置

vm.max_map_count=262144
sysctl -p 檢視是否生效
複製程式碼

system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own ris

這個問題是由於centos的版本問題引起的,在elasticsearch配置中配置

 bootstrap.memory_lock: false
 bootstrap.system_call_filter: false
複製程式碼

外掛head安裝

在ES中的配置允許跨域

http.cors.enabled: true
http.cors.allow-origin: "*"
複製程式碼

下載head專案 推薦採用Git下載, 點選下載

這裡需要安裝Node,大家另行baidu查詢

git clone git://github.com/mobz/elasticsearch-head.git

cd elasticsearch-head

//安裝依賴外掛
npm install

//執行
npm run start
複製程式碼

通過 http://localhost:9100/ 訪問

head安裝完成樣子