(一) 准備
官網下載 es安裝包
JDK版本: 1.8
注意:ES不能以root用戶身份運行 確保運行用戶對各使用到的目錄的權限
獲取安裝包版本 6.2.4
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz
解壓到安裝目錄
tar -xvf elasticsearch-6.2.4.tar.gz -C /opt
配置
# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: myelk //17行(名稱相同就是在一個集群里)
node.name: es1 //本機名稱 23行
network.host: 0.0.0.0 // 54行
discovery.zen.ping.unicast.hosts: [“es1", “es2", “es3"] //發現集群節點 68行
啟動
#cd /opt/elasticsearch-6.2.4/bin #./elasticsearch
#netstat –ltunp // 能夠看到9200,9300被監聽
# curl 192.168.1.51:9200 //通過瀏覽器或curl訪問9200端口
啟動時指定參數:
#./elasticsearch -Ecluster.name=my_cluster_name -Enode.name=my_node_name
了解啟動腳本可用選項:
#./elasticsearch -h
ES集群配置
– 集群中的所有節點要相互能夠ping通,要在所有集群機器上配置/etc/hosts中的主機名與ip對應關系
– 集群中所有機器都要安裝Java環境
– cluster.name集群名稱配置要求完全一致
– node.name為當前節點標識,應配置本機的主機名
– discovery為集群節點機器,不需要全部配置
– 配置完成以后啟動所有節點服務
驗證集群,使用ES內置字段 _cluster/health
curl http://192.168.1.51:9200/_cluster/health?pretty
{
"cluster_name" : "myelk", "status" : "green", "timed_out" : false, "number_of_nodes" : 5, "number_of_data_nodes" : 5, //表示集群中節點的數量 ... ... "active_shards_percent_as_number" : 100.0 }
返回字段解析 status : " green " 集群狀態,綠色為正常,黃色表示有問題但不是很嚴重,紅色表示嚴重故障
RESTful API 調用
Elasticsearch提供了一系列RESTful的API
– 檢查集群、節點、索引的健康度、狀態和統計
– 管理集群、節點、索引的數據及元數據
– 對索引進行CRUD操作及查詢操作
– 執行其他高級操作如分頁、排序、過濾等
POST或PUT數據使用json格式
JSON格式:
數組 ["aa", "bb", "cc"] 鍵值對 { key: value }
RESTful API的簡單使用
_cat API查詢集群狀態,節點信息
例子:
http://192.168.1.51:9200/_cat/health?v //v參數顯示詳細信息
http://192.168.1.51:9200/_cat/health?help //help顯示幫助信息
http://192.168.1.51:9200/_cat/nodes?v //nodes 查詢節點狀態信息
http://192.168.1.51:9200/_cat/indices?v //索引信息
RESTful API增加:
curl -XPUT http://192.168.1.55:9200/t3/ -d '{
"settings":{
"index":{ "number_of_shards": 5, //分片數量 "number_of_replicas": 1 //副本數量 } } }'
http://192.168.1.51:9200/_plugin/head/ //elaserch頁面
增:PUT
RESTful API插入數據
– (增)加數據,使用 PUT 方法
– 調用方式: 數據庫地址/索引/類型/id值
curl -XPUT http://192.168.1.51:9200/t3/n1/1 -d '{
"姓名":"李白",
"職業":"詩人", "稱號":"詩仙", "年代":"唐"}'
改:POST
– 修(改)數據,使用 POST 方法
– 在修改數據的時候必須調用 _update 關鍵字
– 調用方式:數據庫地址/索引/類型/id值/_update
curl -XPOST http://192.168.1.53:9200/t3/n1/2/_update -d '
{"doc":{"職業":"粉絲"}}'
文檔
查:GET
– 查詢使用 GET 方法,GET為默認方法
– 查詢顯示結果時候可以用 pretty 規范顯示格式
– 多條查詢需要使用 _mget 關鍵字配合 json 調用
curl -XGET 'http://192.168.1.55:9200/tedu/teacher/1'
刪:DELETE
– 刪除時候可以是文檔,也可以是庫,但不能是類型
curl -XDELETE 'http://192.168.1.55:9200/tedu/teacher/1'
curl -XDELETE 'http://192.168.1.55:9200/tedu'
批量導入數據
使用_bulk批量導入數據
– 批量導入數據使用POST方式,數據格式為json,url ;編碼使用data-binary
– 導入含有index配置的json文件
# gzip -d logs.jsonl.gz //解壓文件 # curl -XPOST 'http://192.168.1.51:9200/_bulk' --data-binary @logs.jsonl //導入 導入數據時,先查看數據,如有需要,自己添加庫和表 web1 ~]# cat /var/log/httpd/access_log //訪問日志 192.168.1.40 - - [13/Jun/2019:14:12:57 +0800] "GET / HTTP/1.1" 200 12 "-" "curl/7.29.0" ip地址 時間戳 訪問方式 協議/版本號
