Elasticsearch介紹和安裝

軟件包:

鏈接:https://pan.baidu.com/s/1O_C0JQGfF8sC_OtcCCLNoQ
提取碼:3iai

1.1.簡介

1.1.1.Elastic

Elastic官網:https://www.elastic.co/cn/

Elasticsearch介紹和安裝

Elastic有一條完整的產品線及解決方案:Elasticsearch、Kibana、Logstash等,前面說的三個就是大家常說的ELK技術棧。

Elasticsearch介紹和安裝

1.1.2.Elasticsearch

Elasticsearch官網:https://www.elastic.co/cn/products/elasticsearch

Elasticsearch介紹和安裝

如上所述,Elasticsearch具備以下特點:

  • 分佈式,無需人工搭建集群(solr就需要人為配置,使用Zookeeper作為註冊中心)
  • Restful風格,一切API都遵循Rest原則,容易上手
  • 近實時搜索,數據更新在Elasticsearch中幾乎是完全同步的。

1.1.3.版本

目前Elasticsearch最新的版本是6.3.1,我們就使用6.3.0

Elasticsearch介紹和安裝

需要虛擬機JDK1.8及以上

1.2.安裝和配置

為了模擬真實場景,我們將在linux下安裝Elasticsearch。

1.2.1.新建一個用戶leyou

出於安全考慮,elasticsearch默認不允許以root賬號運行。

創建用戶:

<code>useradd leyou/<code>

設置密碼:

<code>passwd leyou/<code>

切換用戶:

<code>su - leyou/<code>

1.2.2.上傳安裝包,並解壓

我們將安裝包上傳到:/home/leyou目錄

解壓縮:

<code>tar -zxvf elasticsearch-6.2.4.tar.gz/<code>

刪除壓縮包:

<code>rm -rf elasticsearch-6.2.4.tar.gz/<code>

我們把目錄重命名:

<code>mv elasticsearch-6.2.4/ elasticsearch/<code>

進入,查看目錄結構:

Elasticsearch介紹和安裝

1.2.3.修改配置

我們進入config目錄:cd config

需要修改的配置文件有兩個:

Elasticsearch介紹和安裝

  1. jvm.options

Elasticsearch基於Lucene的,而Lucene底層是java實現,因此我們需要配置jvm參數。

<code>vim jvm.options/<code>

默認配置如下:

<code>-Xms1g-Xmx1g/<code>

內存佔用太多了,我們調小一些:

<code>-Xms512m-Xmx512m/<code>
  1. elasticsearch.yml
<code>vim elasticsearch.yml/<code>
  • 修改數據和日誌目錄:
<code>path.data: /home/leyou/elasticsearch/data # 數據目錄位置path.logs: /home/leyou/elasticsearch/logs # 日誌目錄位置/<code>

我們把data和logs目錄修改指向了elasticsearch的安裝目錄。但是這兩個目錄並不存在,因此我們需要創建出來。

進入elasticsearch的根目錄,然後創建:

<code>mkdir datamkdir logs/<code>
Elasticsearch介紹和安裝

  • 修改綁定的ip:
<code>network.host: 0.0.0.0 # 綁定到0.0.0.0,允許任何ip來訪問/<code>

默認只允許本機訪問,修改為0.0.0.0後則可以遠程訪問

目前我們是做的單機安裝,如果要做集群,只需要在這個配置文件中添加其它節點信息即可。

elasticsearch.yml的其它可配置信息:

屬性名說明cluster.name配置elasticsearch的集群名稱,默認是elasticsearch。建議修改成一個有意義的名稱。node.name節點名,es會默認隨機指定一個名字,建議指定一個有意義的名稱,方便管理path.conf設置配置文件的存儲路徑,tar或zip包安裝默認在es根目錄下的config文件夾,rpm安裝默認在/etc/ elasticsearchpath.data設置索引數據的存儲路徑,默認是es根目錄下的data文件夾,可以設置多個存儲路徑,用逗號隔開path.logs設置日誌文件的存儲路徑,默認是es根目錄下的logs文件夾path.plugins設置插件的存放路徑,默認是es根目錄下的plugins文件夾bootstrap.memory_lock設置為true可以鎖住ES使用的內存,避免內存進行swapnetwork.host設置bind_host和publish_host,設置為0.0.0.0允許外網訪問http.port設置對外服務的http端口,默認為9200。transport.tcp.port集群結點之間通信端口discovery.zen.ping.timeout設置ES自動發現節點連接超時的時間,默認為3秒,如果網絡延遲高可設置大些discovery.zen.minimum_master_nodes主結點數量的最少值 ,此值的公式為:(master_eligible_nodes / 2) + 1 ,比如:有3個符合要求的主結點,那麼這裡要設置為2

修改文件權限:

leyou 要own(擁有) elasticsearch 這個文件夾權限 -R 是遞歸的賦予權限

<code>chown leyou:leyou elasticsearch/ -R/<code>

1.3.運行

進入elasticsearch/bin目錄,可以看到下面的執行文件:

Elasticsearch介紹和安裝

然後輸入命令:

<code>./elasticsearch/<code>

發現報錯了,啟動失敗:

1.3.1.錯誤1:內核過低

Elasticsearch介紹和安裝

我們使用的是centos6,其linux內核版本為2.6。而Elasticsearch的插件要求至少3.5以上版本。不過沒關係,我們禁用這個插件即可。

修改elasticsearch.yml文件,在最下面添加如下配置:

<code>bootstrap.system_call_filter: false/<code>

然後重啟

1.3.2.錯誤2:文件權限不足

再次啟動,又出錯了:

Elasticsearch介紹和安裝

<code>[1]: max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]/<code>

我們用的是leyou用戶,而不是root,所以文件權限不足。

首先用root用戶登錄。

然後修改配置文件:

<code>vim /etc/security/limits.conf/<code>

添加下面的內容:

<code>* soft nofile 65536* hard nofile 131072* soft nproc 4096* hard nproc 4096/<code>

1.3.3.錯誤3:線程數不夠

剛才報錯中,還有一行:

<code>[1]: max number of threads [1024] for user [leyou] is too low, increase to at least [4096]/<code>

這是線程數不夠。

繼續修改配置:

<code>vim /etc/security/limits.d/90-nproc.conf /<code>

修改下面的內容:

<code>* soft nproc 1024/<code>

改為:

<code>* soft nproc 4096/<code>

1.3.4.錯誤4:進程虛擬內存

<code>[3]: max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]/<code>

vm.max_map_count:限制一個進程可以擁有的VMA(虛擬內存區域)的數量,繼續修改配置文件, :

<code>vim /etc/sysctl.conf /<code>

添加下面內容:

<code>vm.max_map_count=655360/<code>

然後執行命令:

<code>sysctl -p/<code>

1.3.5.重啟終端窗口

所有錯誤修改完畢,一定要重啟你的 Xshell終端,否則配置無效。

1.3.6.啟動

再次啟動,終於成功了!

Elasticsearch介紹和安裝

可以看到綁定了兩個端口:

  • 9300:集群節點間通訊接口
  • 9200:客戶端訪問接口

我們在瀏覽器中訪問:http://192.168.56.101:9200

Elasticsearch介紹和安裝

1.4.安裝kibana

1.4.1.什麼是Kibana?

Elasticsearch介紹和安裝

Kibana是一個基於Node.js的Elasticsearch索引庫數據統計工具,可以利用Elasticsearch的聚合功能,生成各種圖表,如柱形圖,線狀圖,餅圖等。

而且還提供了操作Elasticsearch索引數據的控制檯,並且提供了一定的API提示,非常有利於我們學習Elasticsearch的語法。

1.4.2.安裝

因為Kibana依賴於node,我們的虛擬機沒有安裝node,而window中安裝過。所以我們選擇在window下使用kibana。

最新版本與elasticsearch保持一致,也是6.3.0

Elasticsearch介紹和安裝

解壓到特定目錄即可

1.4.3.配置運行

配置

進入安裝目錄下的config目錄,修改kibana.yml文件:

修改elasticsearch服務器的地址:

<code>elasticsearch.url: "http://192.168.56.101:9200"/<code>

運行

進入安裝目錄下的bin目錄:

Elasticsearch介紹和安裝

雙擊運行:

Elasticsearch介紹和安裝

發現kibana的監聽端口是5601

我們訪問:http://127.0.0.1:5601

Elasticsearch介紹和安裝

1.4.4.控制檯

選擇左側的DevTools菜單,即可進入控制檯頁面:

Elasticsearch介紹和安裝

在頁面右側,我們就可以輸入請求,訪問Elasticsearch了。

Elasticsearch介紹和安裝

1.5.安裝ik分詞器

Lucene的IK分詞器早在2012年已經沒有維護了,現在我們要使用的是在其基礎上維護升級的版本,並且開發為ElasticSearch的集成插件了,與Elasticsearch一起維護升級,版本也保持一致,最新版本:6.3.0

1.5.1.安裝

上傳資料中的zip包,解壓到Elasticsearch目錄的plugins目錄中:

Elasticsearch介紹和安裝

使用unzip命令解壓:

<code>unzip elasticsearch-analysis-ik-6.3.0.zip -d ik-analyzer/<code>

然後重啟elasticsearch:

Elasticsearch介紹和安裝

1.5.2.測試

大家先不管語法,我們先測試一波。

在kibana控制檯輸入下面的請求:

<code>POST _analyze{  "analyzer": "ik_max_word",  "text":     "我是中國人"}/<code>

運行得到結果:

<code>{  "tokens": [    {      "token": "我",      "start_offset": 0,      "end_offset": 1,      "type": "CN_CHAR",      "position": 0    },    {      "token": "是",      "start_offset": 1,      "end_offset": 2,      "type": "CN_CHAR",      "position": 1    },    {      "token": "中國人",      "start_offset": 2,      "end_offset": 5,      "type": "CN_WORD",      "position": 2    },    {      "token": "中國",      "start_offset": 2,      "end_offset": 4,      "type": "CN_WORD",      "position": 3    },    {      "token": "國人",      "start_offset": 3,      "end_offset": 5,      "type": "CN_WORD",      "position": 4    }  ]}/<code> 



分享到:


相關文章: