1. 程式人生 > >ElasticSearch API 簡要介紹

ElasticSearch API 簡要介紹

網絡 nod date info 基於 基於內存 path -s sts

調用其API會返回很多信息,例如集群的信息,節點的信息等

  • 檢查集群的狀態----Restful API說明
1:檢查集群狀態信息 2:管理集群 3:執行 增刪改查 命令 4:執行高級命令
  • Restful API的訪問接口
### 下面的API可以在瀏覽器中查看,也可以使用curl -X GET 命令查看 # 顯示單臺節點的信息 http://192.168.23.10:9200 http://192.168.23.10:9200/?pretty (使用美化的形式查看json數據) # 使用_cat API查詢 http://192.168.23.10:9200/_cat (可以查看許多API接口)
例如:http://192.168.23.10:9200/_cat/nodes(節點個數) 例如:http://192.168.23.10:9200/_cat/nodes?v(信息信息) # 使用_cluster API查詢 1:stats 2:health 3:state 4:nodes http://192.168.23.10:9200/_nodes/health http://192.168.23.10:9200/_cluster/health http://192.168.23.10:9200/_cluster/health?pretty

(三)ElasticSearch Plugins 簡要介紹

ElasticSearch提供了很多豐富的插件,能夠給我們很直觀的管理集群和查看集群

  • 安裝插件
1:將插件放入插件的目錄中,就像PHP一樣安裝插件, 插件目錄在/usr/share/elasticsearch/plugins 2:使用plugin命令安裝 /usr/share/elasticsearch/bin/plugin ,如果經常使用,可以將插件命令寫入環境變量PAHT中 /usr/share/elasticsearch/bin/plugin --help install Install a plugin remove Remove a plugin list List installed plugins /usr/share/elasticsearch/bin/plugin install --help
3:安裝插件 /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf /usr/share/elasticsearch/bin/plugin install license /usr/share/elasticsearch/bin/plugin install marvel-agent 4:在瀏覽器上就可以訪問創建提供的接口 192.168.23.10:9200/_plugin/head 192.168.23.10:9200/_plugin/kopf
  • 手動創建document(文檔的數值類型有:字符串,數值,布爾,時間)
1:手動創建index、document curl -X PUT ‘192.168.23.10:9200/uplooking/ops/dage?pretty‘ -d ‘{"name": "dage", "age": 20}‘ { "_index" : "uplooking", "_type" : "ops", "_id" : "dage", "_version" : 1, "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "created" : true } curl -X PUT ‘192.168.23.10:9200/uplooking/ops/xiaoge?pretty‘ -d ‘{"name": "xiaoge", "age": 20}‘ { "_index" : "uplooking", "_type" : "ops", "_id" : "xiaoge", "_version" : 1, "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "created" : true } 2:取出通過index取出document curl -X GET ‘192.168.23.10:9200/uplooking/ops/xiaoge?pretty‘ { "_index" : "uplooking", "_type" : "ops", "_id" : "xiaoge", "_version" : 1, "found" : true, "_source" : { "name" : "xiaoge", "age" : 20 } }
  • 手動修改document
curl -X POST 192.168.23.10:9200/uplooking/ops/xiaoge/_update?pretty -d ‘{ "doc": {"age": 19} }‘ { "_index" : "uplooking", "_type" : "ops", "_id" : "xiaoge", "_version" : 2, "found" : true, "_source" : { "name" : "xiaoge", "age" : 19 } }
  • 手動刪除document
curl -X DELETE 192.168.23.10:9200/uplooking/ops/dage?pretty
  • 查看當前的索引
curl -X GET 192.168.23.10:9200/_cat/indices?v
  • 刪除索引
curl -X DELETE 192.168.23.10:9200/uplooking
  • 搜索數據(查詢數據) DSL查詢語言介紹使用這個工具查看:http://www.bejson.com/jsonviewernew/
1:使用restful API查詢(query DSL) curl -X GET 192.168.23.10:9200/uplooking/_search?pretty(查詢uplooking索引的文檔) curl -X GET 192.168.23.10:9200/_search?pretty (查詢所有索引的文檔) 2:使用rest 查詢(filter DSL,速度較快,可以緩存查詢結果) curl -X GET ‘192.168.23.10:9200/uplooking/_search?pretty‘ -d ‘{ "query": { "match_all": {}} }‘ curl -X GET ‘192.168.23.10:9200/uplooking/_search?pretty‘ -d ‘{ "query": { "term": { "age": 20 }} }‘ curl -X GET ‘192.168.23.10:9200/uplooking/_search?pretty‘ -d ‘{ "query": { "terms": { "age": [19, 20] }} }‘
  • 映射和分析 mapping and analysis
# 全key掃描,不要指定查詢的key curl -X GET ‘192.168.23.10:9200/uplooking/_search?q=20&pretty‘ # 指定key掃描,指定查詢的key curl -X GET ‘192.168.23.10:9200/uplooking/_search?q=age:20&pretty‘ # 使用_mapping查看數值類型 curl -X GET ‘192.168.23.10:9200/uplooking/_mapping/ops?pretty‘ # 分析 需要使用分詞工具
  • Logstash 安裝(依賴於jruby編譯器,因此需要配置Java環境)
1:查看當前的Java JDK版本,是否符合要求,下載的為2.4.4版本,因此滿足條件 [root@7 ~]# java -version openjdk version "1.8.0_65" 2:指定JAVA_HOST的環境變量所在路徑 編輯/etc/profile.d/java.sh文件,添加 export JAVA_HOME=/usr . /etc/profile.d/java.sh 3:安裝java-1.8.0-openjdk-devel.x86_64包 yum install -y java-1.8.0-openjdk-devel.x86_64(這裏應該將JDK跟新至最新版本了) 4: 下載RPM包,或者配置yum源 ①:https://www.elastic.co/downloads/past-releases/logstash-2-4-0 ②:https://www.elastic.co/guide/en/logstash/2.4/installing-logstash.html 5:安裝完畢之後,將其命令添加至PATH中 編輯/etc/profile.d/logstash.sh,添加 export PATH=/opt/logstash/bin:$PATH . /etc/profile.d/logstash.sh 6:logstash的配置文件用於指定插件的運作機制,支持四種插件:input、filter、codec、output,編輯/etc/logstash/conf.d/easy.conf,這裏至寫了三種插件,filter插件使用其默認值 # 指定數據從哪裏來 input { stdin {} } # 指定數據到哪裏去 output { stdout { codec => rubydebug } } 7:檢查配置文件是否正確 logstash -f /etc/logstash/conf.d/easy.conf --configtest 8:運行logstash logstash -f /etc/logstash/conf.d/easy.conf 9:運行之後,直接在底下輸入一條日誌數據,讓其清洗,返回的應該是json的數據 Oct 3 15:17:21 7 NetworkManager[531]: <info> (enp0s3): device state change: secondaries -> activated (reason ‘none‘) [90 100 0] { "message" => "Oct 3 15:17:21 7 NetworkManager[531]: <info> (enp0s3): device state change: secondaries -> activated (reason ‘none‘) [90 100 0]", "@version" => "1", "@timestamp" => "2017-10-04T14:31:00.987Z", "host" => "7" } 10:參考文檔 https://www.elastic.co/guide/en/logstash/2.4/index.html
  • Logstash 常用插件介紹
1:input 插件 ①:file:監聽文件的最後一行,就是tail -f 一樣 創建一個/etc/logstash/conf.d/file.conf,內容如下: input { file { # 指明文件路徑,這裏使用列表的形式,表示可以讀取多個文件 path => ["/var/log/messages"] # 指明類型為system類型 type => "system" # 指定讀取的起始位置,如果"end",將會從文件結尾處開始讀取 start_position => "beginning" } } output { stdout { # 指定編碼格式 codec => rubydebug } } # 檢查配置文件正確性 logstash -f /etc/logstash/conf.d/file.conf --configtest # 運行logstash logstash -f /etc/logstash/conf.d/file.conf ②:udp:使用udp連接獲取數據,必須指明的參數為port,自己監聽的端口,host指明監聽的地址 首先必須安裝collectd程序,collectd是一個守護(daemon)進程,用來定期收集系統和應用程序的性能指標,同時提供了機制,以不同的方式來存儲這些指標值,這裏將collectd安裝在logstash服務器本地。推薦一篇文章:https://linux.cn/article-5252-1.html ,到時候,可以使用Python的多線程多進程模型完成collectd的功能 # 安裝collectd yum install -y collectd # 編輯配置文件 vi /etc/collectd.conf Hostname "localhost" 打開LoadPlugin network 添加network插件的配置 <Plugin network> # 指明將數據發送給192.168.23.13的25826端口 <Server "192.168.23.13" "25826"> </Server> </Plugin> # 運行collectd systemctl start collectd.service # 查看 systemctl status collectd.service # 創建/etc/logstash/conf.d/udp.conf,添加內容如下 input { udp { # 指明監聽的端口 port => 25826 # 指明編碼 codec => collectd {} # 指明由collectd發送的信息都解析 type => "collectd" } } output { stdout { # 指定編碼格式 codec => rubydebug } } # 運行logstash logstash -f /etc/logstash/conf.d/udp.conf 2:redis插件 從Redis中獲得數據,什麽是Redis,Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API。支持redis 通道(channel)和 列表(lists) 3:filter插件:信息有input插件輸入,filter插件將信息過濾,清洗,之後再有output插件輸出 ①:grok插件介紹:清洗文本數據,最常用就是清洗web日誌,這個功能Python可以做 grok正則匹配文件:/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-2.0.5/patterns/grok-patterns grok語法說明: # 如果是匹配到192.168.23.111 那麽就清洗為clientip: 192.168.23.111 COMMONAPACHELOG %{IPORHOST:clientip} %{HTTPDUSER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-) 官方示例:https://www.elastic.co/guide/en/logstash/2.4/plugins-filters-grok.html # 創建/etc/logstash/conf.d/grok.conf,添加內容如下 input { file { # 指明文件路徑,這裏使用列表的形式,表示可以讀取多個文件 path => ["/var/log/httpd/access_log"] # 指明類型為system類型 type => "system" # 指定讀取的起始位置,如果"end",將會從文件結尾處開始讀取 start_position => "end" } } filter { grok { # 指定匹配的正則表達式 # match => { "message" => "%{COMMONAPACHELOG} %{QS:referrer} %{QS:agent}" } match => { "message" => "%{COMBINEDAPACHELOG}" } } } output { stdout { # 指定編碼格式 codec => rubydebug } } # 檢查配置文件 # 運行logstash 例如 URIPARM1 [A-Za-z0-9$.+!*‘|(){},~@#%&/=:;_?\-\[\]]* URIPATH1 (?:/[A-Za-z0-9$.+!*‘(){},~:;=@#%&_\- ]*)+ URI1 (%{URIPROTO}://)?(?:%{USER}(?::[^@]*)?@)?(?:%{URIHOST})?(?:%{URIPATHPARAM})? NGINXACCESS %{IPORHOST:remote_addr} - (%{USERNAME:user}|-) \[%{HTTPDATE:log_timestamp}\] %{HOSTNAME:http_host} %{WORD:request_method} \"%{URIPATH1:uri}\" \"%{URIPARM1:param}\" %{BASE10NUM:http_status} (?:%{BASE10NUM:body_bytes_sent}|-) \"(?:%{URI1:http_referrer}|-)\" (%{BASE10NUM:upstream_status}|-) (?:%{HOSTPORT:upstream_addr}|-) (%{BASE16FLOAT:upstream_response_time}|-) (%{BASE16FLOAT:request_time}|-) (?:%{QUOTEDSTRING:user_agent}|-) \"(%{IPV4:client_ip}|-)\" \"(%{WORD:x_forword_for}|-)\"

ElasticSearch API 簡要介紹