Elasticsearch 之 Hello World (一)

    做爲一名半道出家的程序員,學習新的知識老是喜歡先從Hello World開始,以爲這樣能夠比較簡單的,首先給我直觀上體驗下新技術的特色。最近由於一個項目需求,決定開始入手Elasticsearch開始進行數據查詢,分析工做。做爲傳統關係型數據庫儲備知識約爲0,大數據新技術儲備知識等於0的我來講,很想先找來一個Hello World體驗下,惋惜網上找了半天,沒有找到相關詳細的資料(或者至少對我而言,有些教程仍是不夠詳細,具體,何況時至今日,Elasticsearch已經發布到5.2.1版本了,網上不少教程仍是基於以前的2.X甚至更古老的版本)所以,決定求人不如求己,本身開始來搞一篇Step By Step,做爲本身測試過程的一個記錄吧。linux

    1、 系統環境程序員

    硬件:一臺2年前攢的性能尚可的PC。web

    軟件:Vmware + Centos 7 x64shell

    其實在5.2.1版本對windows的支持應該已經不錯了,至少從文件來看,有專門的bat和exe文件。但從經驗來看,凡是開源的東東,尤爲這種開源後移植到win平臺的東東,有可能的話仍是老老實實用linux系統吧。況且官方的各類示例基本也是linux下,curl這種小工具更是任意linux系統的標配。最後還有一個緣由:win系統b格不夠高。若是未來真的要向領導演示這個系統,讓領導看着平臺原來和他一直用來寫文檔,玩掃雷的是一個系統,多掉價。數據庫

    2、 安裝json

    1 首先固然是安裝Elasticsearch 5.2.1了。沒想到,剛開始就掉入一個坑,https://www.elastic.co/downloads/elasticsearch中看到有rpm包,想着直接在系統yum install該多麼帥。想都沒想就按照官方教程windows

      

    來作,然而首先,龜速的下載速度已經讓我抓狂,喝了n杯茶以後,悲催的發現,居然安裝出錯,因爲本文寫於系統已經初步搭建完成,因此當時報錯信息忘記截圖了。用萬能的google+baidu各類搜索,試了諸如切換用戶權限等各類方法後,錯誤仍然,遂放棄。仍是     老老實實用迅雷下載離線安裝包。解壓文件夾elasticsearch-5.2.1到當前用戶的主文件夾(就是centos當前用戶在桌面上打開終端,默認的那個路徑)。而後直接在shell定位到bin目錄運行centos

    

 ./elasticsearch

 

    成功了,是的,就這麼簡單,以前被yum給坑死了。然而,這僅僅是安裝     的第一步,由於基本上如今用這個的都得裝幾個必備插件吧,固然這中間還有n個坑。瀏覽器

    2 安裝X-PACK插件。嗯,首先找到這個名字就是一個坑,由於網上搜索相關材料,仍是一窩蜂的告訴你,要安裝HEAD插件,而後你就能夠很Happy的去web gui體驗了。要是你按照這些教程一行行的輸入相關安裝head的命令,就等着報錯吧,由於官方已經明確提     示了,從elasticsearch5.0版本之後,以前經典的head、marvel這些都集成到了x-pack插件包裏面。其實要是英語夠好,根本不用網上找各類資料,直接去看官網的readme,絕對是最權威,最靠譜的第一手資料。
app

    按照官方提示

sudo bin/elasticsearch-plugin install x-pack

    而後就是使人抓狂的等待過程,實在是太太太慢了,果斷採用B方案,即離線安裝。首先迅雷下載 https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-5.2.1.zip,而後不用解壓,不用解壓,不用解壓,重要的事情說三遍,將該文件放到一個比較方便的   目錄,如我就放在tmp目錄下。而後運行

./elasticsearch-plugin install file:///tmp/x-pack-5.2.1.zip

    秒OK。有潔癖的別急着刪除tmp下的這個文件,由於kibana和logstash也須要這樣離線安裝x-pack。(這樣看來,個人安裝順序貌似有誤,應該先安裝那兩個,最後安裝x-pack纔是。沒辦法,誰讓我是搜索head插件開始的呢)

    3 安裝 kibana。

    沒有吸收教訓的我,這裏一開始仍然妄圖經過yum install的方法來安裝,然而龜速很快就讓我繳械投降了。果斷直接下載包https://artifacts.elastic.co/downloads/kibana/kibana-5.2.1-linux-x86_64.tar.gz,解壓完以後直接運行

 ./kibana

    是秒OK。

    4 安裝logstash。徹底參照3。 

    5 註冊x-pack。

    此時若是打開瀏覽器http://localhost:5601登陸(默認的用戶名是elastic密碼是changeme),會發現沒幾天就會過時,這是由於x-pack只是針對開發測試環境免費,但須要去註冊激活一個一年的key。根據頁面上註冊的提示鏈接,很容易就能夠註冊下載到一個json     格式的激活文件,有效期一年。(我是用十分鐘郵箱去註冊的,我會亂說?:))。下載到的json文件是比較長的字符,爲了方便我改成key.json。而後根據官方連接的提示,在json當前目錄的shell中輸入

 curl -XPUT 'http://localhost:9200/_license' -d @key.json

    然而很不幸,提示以下

{"acknowledged":false,"license_status":"valid","acknowledge":{"message":"This license update requires acknowledgement. To acknowledge the license, please read the following messages and 
......

    繼續google,發如今http://stackoverflow.com/questions/36135815/marvel-basic-licence-installation的解決方法,即在http://localhost:9200/_license後面添加acknowledge=true,即

curl -XPUT 'http://localhost:9200/_license?acknowledge=true' -d @key.json

    一切順利,最好重啓下服務,再登錄頁面就會發現提示是一年後過時了。

    6 參照2,在 kibana和logstash安裝x-pack。

    至此,Elasticsearch和一些經常使用的基本組件應該安裝完成了。下面,應該就能夠開始導入、查詢數據了。

 

    BTW,雖然程序已經能夠跑起來了,可是仔細查看ElasticSearch的輸出日誌,發現有兩處報警:

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

    解決方案:第一個問題,

sudo gedit /etc/security/limits.conf

   添加以下兩行

啓動es的用戶名 soft nofile 65536
啓動es的用戶名 hard nofile 65536

   保存重啓後,確認下結果爲65536

ulimit -Hn

   第二個問題,

sudo gedit /etc/sysctl.conf

   而後添加  

vm.max_map_count=262144

  保存重啓後,確認下結果修改爲功

sysctl vm.max_map_count

  最後,設置下Xms和Xmx,最好是物理內存的一半。

gedit ElasticSearch目錄\config\jvm.options

  設置爲

-Xms4g
-Xmx4g
(我給虛擬機分配了8g內存)

   保存重啓便可。

相關文章
相關標籤/搜索