Elasticsearch基礎教程

ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java語言開發的,並做爲Apache許可條款下的開放源碼發佈,是一種流行的企業級搜索引擎。
Elastic

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

Elasticsearch基礎教程Elasticsearch基礎教程

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

Elasticsearch基礎教程Elasticsearch基礎教程

Elasticsearch

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

Elasticsearch基礎教程Elasticsearch基礎教程

如上所述,Elasticsearch具有如下特色:web

分佈式,無需人工搭建集羣(solr就須要人爲配置,使用Zookeeper做爲註冊中心)shell

Restful風格,一切API都遵循Rest原則,容易上手bootstrap

近實時搜索,數據更新在Elasticsearch中幾乎是徹底同步的。vim

版本

目前Elasticsearch最新的版本是6.3.1,咱們就使用6.3.0瀏覽器

Elasticsearch基礎教程Elasticsearch基礎教程

須要虛擬機JDK1.8及以上安全

安裝和配置

爲了模擬真實場景,咱們將在linux下安裝Elasticsearch。服務器

新建一個用戶leyou

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

建立用戶:

useradd leyou

設置密碼:

passwd leyou

切換用戶:

su - leyou
上傳安裝包,並解壓

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

解壓縮:

tar -zxvf elasticsearch-6.2.4.tar.gz

刪除壓縮包:

rm -rf elasticsearch-6.2.4.tar.gz

咱們把目錄重命名:

mv elasticsearch-6.2.4/ elasticsearch

進入,查看目錄結構:

Elasticsearch基礎教程Elasticsearch基礎教程

修改配置

咱們進入config目錄:cd config

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

Elasticsearch基礎教程Elasticsearch基礎教程

jvm.options

Elasticsearch基於Lucene的,而Lucene底層是Java實現,所以咱們須要配置jvm參數。

編輯jvm.options:

vim jvm.options

默認配置以下:

-Xms1g
-Xmx1g

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

-Xms512m
-Xmx512m

elasticsearch.yml
vim elasticsearch.yml

修改數據和日誌目錄:

path.data: /home/leyou/elasticsearch/data # 數據目錄位置
path.logs: /home/leyou/elasticsearch/logs # 日誌目錄位置

咱們把data和logs目錄修改指向了elasticsearch的安裝目錄。可是這兩個目錄並不存在,所以咱們須要建立出來。

進入elasticsearch的根目錄,而後建立:

mkdir data
mkdir logs

Elasticsearch基礎教程Elasticsearch基礎教程

修改綁定的ip:

network.host: 0.0.0.0 # 綁定到0.0.0.0,容許任何ip來訪問

默認只容許本機訪問,修改成0.0.0.0後則能夠遠程訪問

目前咱們是作的單機安裝,若是要作集羣,只須要在這個配置文件中添加其它節點信息便可。

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

屬性名	說明
cluster.name 	配置elasticsearch的集羣名稱,默認是elasticsearch。建議修改爲一個有意義的名稱。
node.name 	節點名,es會默認隨機指定一個名字,建議指定一個有意義的名稱,方便管理
path.conf 	設置配置文件的存儲路徑,tar或zip包安裝默認在es根目錄下的config文件夾,rpm安裝默認在/etc/ elasticsearch
path.data 	設置索引數據的存儲路徑,默認是es根目錄下的data文件夾,能夠設置多個存儲路徑,用逗號隔開
path.logs 	設置日誌文件的存儲路徑,默認是es根目錄下的logs文件夾
path.plugins 	設置插件的存放路徑,默認是es根目錄下的plugins文件夾
bootstrap.memory_lock 	設置爲true能夠鎖住ES使用的內存,避免內存進行swap
network.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 是遞歸的賦予權限

chown leyou:leyou elasticsearch/ -R
運行

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

Elasticsearch基礎教程Elasticsearch基礎教程

而後輸入命令

./elasticsearch

發現報錯了,啓動失敗:

錯誤1:內核太低

Elasticsearch基礎教程Elasticsearch基礎教程

咱們使用的是CentOS6,其linux內核版本爲2.6。而Elasticsearch的插件要求至少3.5以上版本。不過不要緊,咱們禁用這個插件便可。

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

bootstrap.system_call_filter: false

而後重啓

錯誤2:文件權限不足

再次啓動,又出錯了:

Elasticsearch基礎教程Elasticsearch基礎教程

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

咱們用的是leyou用戶,而不是root,因此文件權限不足。

首先用root用戶登陸。

而後修改配置文件:

vim /etc/security/limits.conf

添加下面的內容:

* soft nofile 65536

* hard nofile 131072

* soft nproc 4096

* hard nproc 4096
錯誤3:線程數不夠

剛纔報錯中,還有一行:

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

這是線程數不夠。

繼續修改配置:

vim /etc/security/limits.d/90-nproc.conf 

修改下面的內容:

* soft nproc 1024

改成:

* soft nproc 4096
錯誤4:進程虛擬內存

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

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

vim /etc/sysctl.conf 

添加下面內容:

vm.max_map_count=655360

而後執行命令:

sysctl -p
重啓終端窗口

全部錯誤修改完畢,必定要重啓你的 Xshell終端,不然配置無效。

啓動

再次啓動,終於成功了!

Elasticsearch基礎教程Elasticsearch基礎教程

能夠看到綁定了兩個端口:

9300:集羣節點間通信接口

9200:客戶端訪問接口

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

Elasticsearch基礎教程Elasticsearch基礎教程

安裝kibana

1.4.1.什麼是Kibana?

Elasticsearch基礎教程Elasticsearch基礎教程

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

並且還提供了操做Elasticsearch索引數據的控制檯,而且提供了必定的API提示,很是有利於咱們學習Elasticsearch的語法。

安裝

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

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

Elasticsearch基礎教程Elasticsearch基礎教程

解壓到特定目錄便可

配置運行

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

修改elasticsearch服務器的地址:

elasticsearch.url: "http://192.168.56.101:9200"
運行

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

Elasticsearch基礎教程Elasticsearch基礎教程

雙擊運行:

Elasticsearch基礎教程Elasticsearch基礎教程

發現kibana的監聽端口是5601

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

Elasticsearch基礎教程Elasticsearch基礎教程

控制檯

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

Elasticsearch基礎教程Elasticsearch基礎教程

在頁面右側,咱們就能夠輸入請求,訪問Elasticsearch了。

Elasticsearch基礎教程Elasticsearch基礎教程

安裝ik分詞器

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

安裝

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

Elasticsearch基礎教程Elasticsearch基礎教程

使用unzip命令解壓:

unzip elasticsearch-analysis-ik-6.3.0.zip -d ik-analyzer

而後重啓elasticsearch:

Elasticsearch基礎教程Elasticsearch基礎教程

測試

你們先無論語法,咱們先測試一波。

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

POST _analyze
{
  "analyzer": "ik_max_word",
  "text":     "我是中國人"
}

運行獲得結果:

{
  "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
    }
  ]
}
軟件包下載

連接: https://pan.baidu.com/s/1KeIQtkCRDlnba6L73lkXEg 提取碼:mm99

 

本文地址:https://www.linuxprobe.com/elasticsearch.html

相關文章
相關標籤/搜索