Elasticsearch系列(2):Kibana安裝與基本REST API

簡介

Kibana是一個針對Elasticsearch的開源分析及可視化平臺,使用Kibana能夠查詢、查看並與存儲在ES索引的數據進行交互操做,使用Kibana能執行高級的數據分析,並能以圖表、表格和地圖的形式查看數據。html

Kibana安裝和使用

安裝Kibana

下載:
注意Kibana版本須要和Elasticsearch一致。linux

cd /opt/
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.12.1-linux-x86_64.tar.gz

解壓:json

tar -zxvf kibana-7.12.1-linux-x86_64.tar.gz
修改Kibana配置文件

修改/opt/kibana-7.12.1-linux-x86_64/config/kibana.yml:瀏覽器

server.port: 5601 
server.host: "10.0.2.15"
elasticsearch.hosts: ["http://localhost:9200"]

server.port:kibana端口,默認爲5601。
elasticsearch.hosts:Elasticsearch服務地址,默認爲http://localhost:9200。
server.host:要容許遠程用戶鏈接到Kibana,須要將該參數設置爲一個非環回地址。app

經過ifconfig命令查看該地址:
elasticsearch

啓動Kibana

1.首先啓動Elasticsearch。ide

2.啓動Kibana,使用root用戶和非root用戶啓動Kibana有點區別。ui

使用root用戶啓動:code

kibana默認不容許使用root用戶啓動,使用root用戶啓動須要啓動時指定--allow-root。server

/opt/kibana-7.12.1-linux-x86_64/bin/kibana --allow-root

使用非root用戶啓動:

如使用es用戶啓動,首先保證kibana目錄擁有者爲es用戶,不然須要設置kibana目錄擁有者爲es用戶。

chown -R es:es kibana-7.12.1-linux-x86_64

而後在切換到es用戶啓動

/opt/kibana-7.12.1-linux-x86_64/bin/kibana

Kibana啓動成功後,瀏覽器訪問http://localhost:5601/顯示以下界面則表示啓動成功:

Kibana使用

成功啓動Kibana後,可使用Kibana的Dev Tools進行Elasticsearch的REST API調用:

如查詢Elasticsearch中的索引信息:

後續REST API的調用都將採用這種方式。

索引操做

接下來以user索引爲例,簡單介紹下索引的基本操做。

建立索引

請求:

PUT /user

響應:

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "user"
}

acknowledged:響應結果。

shards_acknowledged:分片結果。

index:索引名稱。

索引名稱須要知足如下條件
  • 必須小寫。

  • 不能包含\、/、*、?、"、<、>、|、空格符、,、#、:。

  • 不能以-、_、+開頭。

  • 不能爲.或..。

  • 不能超過255字節(注意是字節不是字符)。

建立具備特定設置的索引

建立具備指定分片數和複製分片數的索引:

PUT /user
{
  "settings": {
    "index": {
      "number_of_shards": 3,  
      "number_of_replicas": 2 
    }
  }
}
建立索引並顯示指定映射信息

顯示的指定字段的數據類型:

PUT /user
{
  "mappings": {
    "properties": {
      "age":    { "type": "integer" },  
      "email":  { "type": "keyword"  }, 
      "name":   { "type": "text"  }     
    }
  }
}

數據類型能夠參考官網:Field data types

查詢索引信息

請求:

GET /user

響應:

{
  "user" : {
    "aliases" : { },
    "mappings" : { },
    "settings" : {
      "index" : {
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_content"
            }
          }
        },
        "number_of_shards" : "1",
        "provided_name" : "user",
        "creation_date" : "1622601754789",
        "number_of_replicas" : "1",
        "uuid" : "iz1nYZOlTSC94Ijry5YiPg",
        "version" : {
          "created" : "7120199"
        }
      }
    }
  }
}

user:索引名稱。

aliases:別名。

mappings:映射。

settings:設置。

creation_date:建立時間。

number_of_shards:主分片數量。

number_of_replicas:副分片數量。

uuid:索引惟一標識。

version:版本。

provided_name:索引名稱。

刪除索引

請求:

DELETE /user

響應:

{
  "acknowledged" : true
}

更多索引操做能夠參考官網:Index APIs

文檔操做

建立文檔

請求:

POST /user/_doc/
{
  "age":18,
  "email":"asd.qq.com",
  "name":"buhe"
}

響應:

{
  "_index" : "user",
  "_type" : "_doc",
  "_id" : "Q2i2y3kB7sfcwRgV3OlC",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

_index:索引名稱。

_type:文檔類型。

_id:文檔的惟一標識。若是沒有指定則默認隨機生成。

_version:文檔版本,每次更新文檔時增長。

result:索引操做的結果(created/updated)。

_shards:提供有關索引操做的複製過程的信息。

_shards.total:表示索引操做應該在多少個分片副本(主分片和複製分片)上執行。

_shards.successful:表示索引操做成功的分片副本數。索引操做成功時,successful至少爲1。

_shards.failed:表示索引操做失敗的分片副本數。

_seq_no:分配給文檔以進行索引操做的序列號。序列號用於確保文檔的舊版本不會覆蓋新版本。

_primary_term:爲索引操做分配給文檔的主要術語。

經過文檔id查詢文檔數據

請求:

GET /user/_doc/Q2i2y3kB7sfcwRgV3OlC

響應:

{
  "_index" : "user",
  "_type" : "_doc",
  "_id" : "Q2i2y3kB7sfcwRgV3OlC",
  "_version" : 1,
  "_seq_no" : 0,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "age" : 18,
    "email" : "asd.qq.com",
    "name" : "buhe"
  }
}

_source爲JSON格式的文檔數據。

修改文檔

請求:

POST user/_update/Q2i2y3kB7sfcwRgV3OlC
{
    "doc":{
      "age" : 38
    }
}

響應:

{
  "_index" : "user",
  "_type" : "_doc",
  "_id" : "Q2i2y3kB7sfcwRgV3OlC",
  "_version" : 5,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 28,
  "_primary_term" : 1
}
刪除文檔

請求:

DELETE /user/_doc/Q2i2y3kB7sfcwRgV3OlC

響應:

{
  "_index" : "user",
  "_type" : "_doc",
  "_id" : "Q2i2y3kB7sfcwRgV3OlC",
  "_version" : 6,
  "result" : "deleted",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 29,
  "_primary_term" : 1
}
文檔的批量操做

可使用Bulk API來完成文檔的批量操做,Bulk API的每個命令佔用兩行,每行都應該以\r\n結束。

第一行爲元數據,第二行爲有效載體,例如批量建立文檔以下:

POST /user/_bulk
{"create":{"_id":6}}
{"age":18,"email":"asd.qq.com","name":"buhe1"}
{"create":{"_id":7}}
{"age":18,"email":"asd.qq.com","name":"buhe2"}
{"create":{"_id":8}}
{"age":18,"email":"asd.qq.com","name":"buhe3"}
{"create":{"_id":9}}
{"age":18,"email":"asd.qq.com","name":"buhe4"}
{"create":{"_id":10}}
{"age":18,"email":"asd.qq.com","name":"buhe5"}

Bulk API不是原子操做,對應每一個命令都會有一個執行結果,即便某個命令執行失敗也不會影響其餘命令的執行。響應:

{
  "took" : 14,
  "errors" : false,
  "items" : [
    {
      "create" : {
        "_index" : "user",
        "_type" : "_doc",
        "_id" : "6",
        "_version" : 1,
        "result" : "created",
        "_shards" : {
          "total" : 2,
          "successful" : 1,
          "failed" : 0
        },
        "_seq_no" : 37,
        "_primary_term" : 2,
        "status" : 201
      }
    },
    其餘省略......
    }
  ]
}
相關文章
相關標籤/搜索