暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Elasticsearch系列(2):Kibana安装与基本REST API

我真的不会Java啊 2021-06-25
420

简介

Kibana是一个针对Elasticsearch的开源分析及可视化平台,使用Kibana可以查询、查看并与存储在ES索引的数据进行交互操作,使用Kibana能执行高级的数据分析,并能以图表、表格和地图的形式查看数据。

Kibana安装和使用

安装Kibana

下载:

注意Kibana版本需要和Elasticsearch一致。

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

解压:

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,需要将该参数设置为一个非环回地址。

通过ifconfig命令查看该地址:

启动Kibana

1.首先启动Elasticsearch。

2.启动Kibana,使用root用户和非root用户启动Kibana有点区别。

使用root用户启动:

kibana默认不允许使用root用户启动,使用root用户启动需要启动时指定--allow-root。

/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
      }
    },
    其他省略......
    }
  ]
}


复制

更多文档操作可以参考官网:Document APIs


文章转载自我真的不会Java啊,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论