ElasticSearch:簡稱es ,分佈式全文搜索引擎,使用java語言開發,面向文檔型數據庫,一條數據就是一個文檔,數據用json序列化後存儲。html
默認端口:9200java
藉助redis來理解node
redis以key/values方式存儲數據,abc=123 經過key(abc)便可取出值(123)python
es 使用索引-類型-數據-數據中的某個字段 格式來存儲數據。linux
es安裝git
服務器ip:192.168.100.2github
軟件包elasticsearch 6.5:web
連接:https://pan.baidu.com/s/14aXMtEldzBT2R8hW2gWEEQ 提取碼:dk7x
下載完畢後,解壓tar包:redis
[root@host1 [00:35:22]/usr/src]#tar xf elasticsearch-6.5.1.tar.gz
解壓後,解壓的目錄能夠直接使用,將解壓後的目錄移動到一個指定位置,並命名數據庫
[root@host1 [00:36:08]/usr/src]#mv elasticsearch-6.5.1 /usr/local/elasticsearch
在PATH變量中添加es的bin目錄,讓系統能夠找到es的可執行文件,方便執行命令
[root@host1 [00:37:10]/usr/src]#cat /etc/profile |tail -3 |head -1 export PATH=$PATH:/usr/local/elasticsearch/bin:/usr/bin/:/usr/local/node/bin/
編輯es配置文件,配置監聽端口,地址等信息
[root@host1 [00:39:52]/usr/local/elasticsearch/config]#vim /usr/local/elasticsearch/config/elasticsearch.yml cluster.name: test 集羣名稱,配置es集羣時設置,集羣名稱相同,網絡相同的狀況下,多臺可同時對外服務 node.name: linux-node1 本機名稱,定義一個你喜歡名稱 path.data: /usr/local/elasticsearch/data es存儲數據的目錄,此目錄不存在,須要手動建立 path.logs: /usr/local/elasticsearch/logs 存儲log的目錄,同上,須要手動建立 bootstrap.memory_lock: false 內存鎖定機制,讓es只在內存中緩存數據,不在swap分區中操做,忽然的使用swap分區會極大的影響速度 Centos6不支持這個機制,因此要設置false bootstrap.system_call_filter: false 上面參數的輔助參數 network.host: 0.0.0.0 監聽的地址 http.port: 9200 監聽端口,默認9200
進行主配置文件定義後,還要進行下方的配置,不然es會啓動失敗
1.建立一個普通用戶啓動es,es不支持root用戶啓動。
[root@host1 [00:40:39]/usr/local/elasticsearch/config]#useradd admin
2.編輯limit文件,寫入下方內容
[admin@host1 [00:57:57]/usr/local/elasticsearch/config]$ulimit -u 4096 用戶最大可開啓進程,臨時生效 須要在你建立的啓動es的用戶空間執行 [root@host1 [00:46:36]/usr/local/elasticsearch/config]#cat /etc/security/limits.conf |grep ^* * soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096
3.用戶最pending signals數量
[root@host1 [00:48:13]/usr/local/elasticsearch/config]#cat /etc/security/limits.d/90-nproc.conf |grep ^* * soft nproc 14794
4.單個JVM能開啓的最大線程數設置
[root@host1 [00:49:12]/usr/local/elasticsearch/config]#sysctl -w vm.max_map_count=262144 臨時生效 vm.max_map_count = 262144 [root@host1 [00:52:27]/usr/local/elasticsearch/config]#echo "vm.max_map_count=262144" >> /etc/sysctl.conf 寫入文件永久生效 [root@host1 [00:52:38]/usr/local/elasticsearch/config]#sysctl -p vm.max_map_count = 262144
5.將es的目錄所屬主,組,更改成你建立的用戶
[admin@host1 [01:00:52]/usr/local/elasticsearch/config]$chown -R admin:admin /usr/local/elasticsearch/
配置完畢後,啓動es,須要使用,你建立的普通用戶,
#命令做用是將全部運行中出現的結果輸出到文件:/usr/local/elasticsearch/logs/run.log 中,並放在後臺執行,不影響前臺操做
[admin@host1 [01:04:22]/usr/local/elasticsearch/config]$elasticsearch &> /usr/local/elasticsearch/logs/run.log &
在瀏覽器中訪問你的服務器的ip地址加上9200端口看結果,相似下面,那麼恭喜,你的es安裝成功了:
下面開始介紹es的簡單操做
存儲數據下方數據至es中
{
"name":"xiaoming"
"age":"22"
}
須要通過如下幾個步驟
1.建立索引名稱爲index-test
1)索引庫名稱必需要所有小寫,不能如下劃線開頭,也不能包含逗號
2)若是沒有明確指定索引數據的ID,那麼es會自動生成一個隨機的ID,須要使用POST參數
[root@host1 [18:18:47]~]#curl -XPUT http://192.168.100.2:9200/index-test 返回結果:{"acknowledged":true,"shards_acknowledged":true,"index":"index-test"}
在某個類型中建立數據
#在index-test的索引中建立一個類型doc,在doc中建立一個數據,user_info存入,username=xiaoming 的對應關係
#-H指定頭部,-X指定方法 -d指定參數,參數用雙引號保衛,由於最終須要轉換爲json數據。
[root@host2 [01:22:22]~]#curl -H "Content-Type: application/json" -XPOST 192.168.100.2:9200/index-test/doc/user_info -d '{"user_name":"xiaoming"}' {"_index":"index-test","_type":"doc","_id":"user_info","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":3}[root@host2 [01:22:35]~]#
獲取數據
#GET方法,獲取對應的索引->類型->數據
[root@host2 [01:26:44]~]#curl -H "Content-Type: application/json" -XGET 192.168.100.2:9200/index-test/doc/user_info {"_index":"index-test","_type":"doc","_id":"user_info","_version":1,"found":true,"_source":{"user_name":"xiaoming"}} _source字段使咱們存儲的數據。
使用這種方法存儲操做數據,豈不是很是麻煩,接下來咱們能夠用獨立的模塊來鏈接es並執行操做,模塊給咱們提供了人性化的界面,比冰冷的代碼更溫暖。
elasticsearch-head
#前期版本的es是集成插件的,經過es自己提供功能便可添加某個插件,目前的es跟插件都是獨立的,插件須要額外安裝
簡稱head模塊,主要功能:中文界面,圖形化操做存儲,更改,刪除數據,界面可顯示現有索引,並對索引大小進行檢查等。
#使用head插件必須配合node使用,下載時請一併下載node軟件包
head以及node軟件包:
連接:https://pan.baidu.com/s/1HtTcvMD8p1wtRcHThk4sMA 提取碼:i4oj
解壓軟件包
[root@host1 [02:09:22]/usr/src]#tar xf elasticsearch-head.tar.gz [root@host1 [02:12:19]/usr/src]#tar xf node-v8.12.0-linux-x64.tar.gz
配置node的,讓系統可以正常執行它的命令,不配置下方步驟,將會報錯:
[root@host1 [02:13:41]/usr/src/elasticsearch-head]#ln -s /usr/src/node-v8.12.0-linux-x64/bin/node /usr/bin/
進入解壓後的head插件目錄,使用node提供的npm進行進行運行,並將運行日誌寫到node目錄下,放入後臺執行,不影響前臺操做
[root@host1 [02:20:09]/usr/src]#cd elasticsearch-head [root@host1 [02:20:15]/usr/src/elasticsearch-head]#/usr/src/node-v8.12.0-linux-x64/bin/npm run start &> /usr/src/node-v8.12.0-linux-x64/run.log &
默認監聽本機9100端口,經過瀏覽器訪問本機9100端口便可,成功後結果以下。
在紅框出輸入es的地址,選擇鏈接後便可展現es的信息(個人es已經通過必定的配置了,因此會有下面的這麼多索引,若是按照此文的進度,索引是不存在的,so,忽略便可。)
在此處能夠查看索引中的所有數據,紅框處標記了,以前建立過的user_name:xiaoming內容,在這個平臺上能夠看到,咱們這數據量小,可是實際環境中日誌量很定是很大的,那麼,能夠根據下圖中黃色區域使用過濾功能進行查看,根據時間過濾,字段過濾等,對這個功能有興趣的,能夠自行了解下。
圖形化的進行新建索引,刪除索引等操做。
下圖展現瞭如何建立一個名稱爲index-test2的索引
在test2中建立數據
下圖演示了在索引test2中的doc類中建立數據,沒有定義數據名稱,默認會定義一個隨機的字符串,如圖中的_id字段。
經過隨機生成的id獲取數據
刪除數據
bigdesk
一套用於監控es的插件,功能很是強大,展示出來的圖很牛逼,可是有些值我至今沒看懂~
另外,這插件幾年沒更新了,可是還可以監控如今新版本的es,在幾年前的時間,這個插件能夠說是很厲害了
下載:
連接:https://pan.baidu.com/s/1qLdFCYQBIb3nnajlq4fTZg 提取碼:ohet
解壓:
[root@host1 [02:48:25]/usr/src]#unzip bigdesk-master.zip
進入解壓後的目錄中的_site,並使用python的功能,建立一個web應用,默認端口8000,便可訪問執行python命令的路徑下的html文件
[root@host1 [02:48:25]/usr/src]#cd bigdesk-master/_site [root@host1 [02:50:14]/usr/src/bigdesk-master/_site]#python -m SimpleHTTPServer &>/dev/null &
在瀏覽器中訪問本機8000端口,成功後在紅框內輸入es地址,下方便可看到圖標,es機器cpu,mem等等
cerebro
kopf的升級版本,更改了個名字,包含kopf的功能(監控工具,幷包含head插件的部分功能,可圖形化的進行新建索引等操做,有一個痛點,軟件是英文版本),並含有其餘功能,下圖是做者github上的公告,大概意思就是kopf不在更新,升級爲cerebro,並對cerebro進行維護。
下載:
連接:https://pan.baidu.com/s/1W1dDPN8Yc6mWQxL7_6KLEg 提取碼:1fj7
解壓:
[root@host1 [03:00:45]/usr/src]#tar xf cerebro-0.8.1.tgz
進入解壓目錄後執行程序便可,默認端口9000(我就不放後臺執行了,愛怎麼執行怎麼把,重要的是把過程展示給大家)
[root@host1 [03:00:45]/usr/src]#cd cerebro-0.8.1 [root@host1 [03:01:12]/usr/src/cerebro-0.8.1]#./bin/cerebro [info] play.api.Play - Application started (Prod) [info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
訪問測試並輸入es地址(界面很酷炫有木有)
鏈接es後,跟head同樣,主界面顯示了索引信息,可是還增長了監控服務器的負載信息等。
rset界面,能夠實現head模塊中的圖形化執行操做數據的功能,而且增長了只能匹配功能,它幫你匹配你輸入的選項後面多是什麼參數。