【Elasticsearch全文搜索引擎實戰】之Head插件實踐

簡介

Elasticsearch是一個基于Lucene的搜索服務器。它提供了一個分布式多用戶能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java開發的,并作為Apache許可條款下的開放源碼發布,是當前流行的企業級搜索引擎。它可以快速地儲存、搜索和分析海量數據。維基百科、Stack Overflow、Github也都采用它做的搜索。
更多Elasticsearch的相關知識,請閱讀官網《Elasticsearch: 權威指南》

Elasticsearch

下面我們重點講Head插件。
Elasticsearch head是一個用瀏覽器跟ES集群交互的插件,可以查看集群狀態、集群的doc內容、執行搜索和普通的Rest請求等。GitHub地址

1. ES 5.0+ 版本Head插件安裝

ES 5.X 和之前的版本不太一樣,elasticsearch-head 做為一個單獨的服務,所以就沒有了 plugin install,網上大部分文章也都是使用的plugin install安裝方式。

1.1 安裝NodeJS

使用yum安裝

[root@node1 ~]# yum install -y nodejs

或者自己下載tar文件解壓

wget https://npm.taobao.org/mirrors/node/latest-v4.x/node-v4.5.0-linux-x64.tar.gz

tar -zxvf node-v4.5.0-linux-x64.tar.gz

配置下環境變量,編輯/etc/profile添加

export NODE_HOME=/usr/local/node-v4.5.0-linux-x64
export PATH=$PATH:$NODE_HOME/bin/
export NODE_PATH=$NODE_HOME/lib/node_modules

執行 source /etc/profile

1.2 安裝npm

[root@node1 ~]# npm install -g cnpm --registry=https://registry.npm.taobao.org

1.3 安裝grunt

[root@node1 ~]# npm install -g grunt
[root@node1 ~]# npm install -g grunt-cli --registry=https://registry.npm.taobao.org --no-proxy

最后確認檢查:

[es@node1 ~]$ node -v
v6.12.0
[es@node1 ~]$ npm -v
3.10.10
[es@node1 ~]$ grunt -version
grunt-cli v1.2.0

1.4 下載head插件源碼

可以下載zip包或者使用git,這里使用git方式

[es@node1 ~]$ git clone git@github.com:mobz/elasticsearch-head.git

1.5 安裝Head插件

[es@node1 ~]$ npm install
  • 此處可能會報錯,npm install Err,PhantomJS not found on PATH",可嘗試使用taobao鏡像安裝
[es@node1 elasticsearch-head-master]$ npm install -g cnpm --registry=https://registry.npm.taobao.org

2. 配置

2.1 停止ES

如果ElasticSearch已經啟動,需要先停止

[es@node1 ~]$ jps
3261 Elasticsearch
3375 Jps
[es@node1 ~]$ kill 3261

2.2 配置 ElasticSearch,使得HTTP對外提供服務

[es@node1 elasticsearch-6.1.1]$ vi config/elasticsearch.yml

添加如下內容:

# 增加新的參數,這樣head插件可以訪問es。設置參數的時候:
http.cors.enabled: true
http.cors.allow-origin: "*"

注意:后面要有空格

2.3 修改Head plugin 配置文件

[es@node1 elasticsearch-head-master]$ vi Gruntfile.js

找到connect:server,添加hostname一項,如下

connect: {
                        server: {
                                options: {
                                        hostname: ':*.*.*.*:',
                                        port: 9100,
                                        base: '.',
                                        keepalive: true
                                }
                        }
                }

3. 啟動

3.1 確認es已經啟動

[es@node1 elasticsearch-6.1.1]$ bin/elasticsearch -d
[es@node1 elasticsearch-6.1.1]$ jps
3451 Jps
3436 Elasticsearch

3.2 啟動head

(1) 使用grunt啟動

[es@node1 elasticsearch-head-master]$ grunt server
# 需要在head的目錄下運行
Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://:*.*.*.*:9100

(2) 使用npm啟動

[es@node1 elasticsearch-head-master]$ npm run start

> elasticsearch-head@0.0.0 start /home/es/elasticsearch-head-master
> grunt server

Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://:*.*.*.*:9100

4. 訪問

訪問地址 http://:*.*.*.*:9100/

未連接

顯示集群未連接,修改地址為剛剛配置的地址:...:9200

已連接

以上內容中*.*.*.*均為自己的ip地址

5. 安全問題(嚴重)

因為該插件可以對數據進行,增刪改查。故生產環境盡量不要使用,如果要使用,最少要限制IP地址。盡量不要使用。

6. 小結

本文主要介紹了ElasticSearch Head的安裝和配置,過程中主要遇到幾個坑:

(1)PhantomJS not found on PATH 錯誤

拉下來head插件的源碼進行npm install時會報錯

npm install error

錯誤日志往上看會看到類似日志:

PhantomJS not found on PATH
Download already available at /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2
Verified checksum of previously downloaded file
Extracting tar contents (via spawned process)

實際是PhantomJS未安裝成功引起,使用cnpm通過淘寶鏡像安裝成功。

(2)配置文件格式

Gruntfile.js和elasticsearch.yml配置文件注意格式,格式錯誤也會導致錯誤。Gruntfile.js注意,,elasticsearch.yml注意空格。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容