1. 程式人生 > >CentOS7.3安裝Elasticsearch(es)安裝記錄

CentOS7.3安裝Elasticsearch(es)安裝記錄

 

開場白:  es 可以 搭建 單點, 也可以搭建叢集,  因為沒看到誰 說明, 給人的感覺單點 不可以. 實際上是可以的, 單點安裝head同樣可以

注:新版es 需要jdk1.8環境,我的jdk使用的 sun的jdk,解除安裝了centos7上自帶的 open jdk

專案搜尋服務為了提升搜尋服務體驗,考慮引入搜尋引擎,考慮範圍在sorl和es,經過對比,es的效能和穩定性都已經得到了證實,相對sorl來說,簡單些。

下面就是本次預研搭建測試平臺上的es步驟:

1. 首先要有個linux環境

2. 安裝es,當前最新版本為     Version: 6.4.1

3. es下載地址:https://www.elastic.co/cn/downloads/elasticsearch

4. es下載完成後,使用 xshell 工具的 rz命令上傳到伺服器

5. 安裝前提:es支援使用者輸入的指令碼執行,所以 es限制了在linux上的root使用者執行,不能再root下啟動es(需配置)

所以,使用普通使用者啟動

(注:因為安全考慮,避免出現不必要的問題,所以,建議使用普通使用者)

root使用者啟動時報錯:

[WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]

org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

6. 解壓檔案: tar  -xvzf filename.tr.gz

7. 啟動es:  切換到 es  /bin/目錄下

   後臺啟動:    ./elasticsearch -d 

   直接啟動es: ./elasticsearch

8. 啟動後遇到錯誤提示:Exception in thread "main" java.nio.file.AccessDeniedException: 意思是 非Root賬戶,當前賬戶沒有許可權,也就是說,想要用普通使用者操作es,那麼普通使用者還要有操作許可權。需要切換到root許可權下,輸入:chown -R use:use /etc/es/   ,然後在切換回到普通使用者,再次啟動

9. 還沒完,測試es是否啟動成功。輸入: curl http://localhost:9200  有報錯了,提示:curl couldn't connect to host 拒絕連線

問題原因一般有2個,1線ping以下網路通不通,2防火牆,我用的centos7.3 預設帶的防火牆是firewall

先檢視以下防火牆的狀態:  systemctl status firewalld

 開放埠後,不立即生效,需要重啟防火牆

# 開啟
service firewalld start
# 重啟
service firewalld restart
# 關閉
service firewalld stop

 開放埠時 沒有--permanent 引數,重啟後失效

# 查詢埠是否開放
firewall-cmd --query-port=8080/tcp
# 開放80埠
firewall-cmd --permanent --add-port=80/tcp
# 移除埠
firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --list-all 
#重啟防火牆(修改配置後要重啟防火牆)
firewall-cmd --reload

# 引數解釋
1、firwall-cmd:是Linux提供的操作firewall的一個工具;
2、--permanent:表示設定為持久;
3、--add-port:標識新增的埠;

我們可以將防火牆開放9200埠,也可以暫時關閉防火牆

請求成功時:

curl http://localhost:9200
{
  "name" : "WktvJa5",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "l0T4RI8ARtOm7N5wF3g_Pg",
  "version" : {
    "number" : "6.4.1",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "e36acdb",
    "build_date" : "2018-09-13T22:18:07.696808Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}
 

es名詞:

 

1.幾個基本名詞

index: es裡的index相當於一個數據庫。
type: 相當於資料庫裡的一個表。
id: 唯一,相當於主鍵。
node:節點是es例項,一臺機器可以執行多個例項,但是同一臺機器上的例項在配置檔案中要確保http和tcp埠不同(下面有講)。
cluster:代表一個叢集,叢集中有多個節點,其中有一個會被選為主節點,這個主節點是可以通過選舉產生的,主從節點是對於叢集內部來說的。
shards:代表索引分片,es可以把一個完整的索引分成多個分片,這樣的好處是可以把一個大的索引拆分成多個,分佈到不同的節點上,構成分散式搜尋。分片的數量只能在索引建立前指定,並且索引建立後不能更改。
replicas:代表索引副本,es可以設定多個索引的副本,副本的作用一是提高系統的容錯性,當個某個節點某個分片損壞或丟失時可以從副本中恢復。二是提高es的查詢效率,es會自動對搜尋請求進行負載均衡。

--------------------- 本文來自 弓弓 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/sinat_28224453/article/details/51134978?utm_source=copy