前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch系列(2):Kibana安装与基本REST API

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

作者头像
布禾
发布2021-06-29 09:58:50
6440
发布2021-06-29 09:58:50
举报
简介

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

Kibana安装和使用
安装Kibana

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

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

解压:

代码语言:javascript
复制
tar -zxvf kibana-7.12.1-linux-x86_64.tar.gz
修改Kibana配置文件

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

代码语言:javascript
复制
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。

代码语言:javascript
复制
/opt/kibana-7.12.1-linux-x86_64/bin/kibana --allow-root

使用非root用户启动:

如使用es用户启动,首先保证kibana目录拥有者为es用户,否则需要设置kibana目录拥有者为es用户。

代码语言:javascript
复制
chown -R es:es kibana-7.12.1-linux-x86_64

然后在切换到es用户启动

代码语言:javascript
复制
/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索引为例,简单介绍下索引的基本操作。

创建索引

请求:

代码语言:javascript
复制
PUT /user

响应:

代码语言:javascript
复制
{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "user"
}

acknowledged:响应结果。

shards_acknowledged:分片结果。

index:索引名称。

索引名称需要满足以下条件
  • 必须小写。
  • 不能包含\、/、*、?、"、<、>、|、空格符、,、#、:。
  • 不能以-、_、+开头。
  • 不能为.或..。
  • 不能超过255字节(注意是字节不是字符)。
创建具有特定设置的索引

创建具有指定分片数和复制分片数的索引:

代码语言:javascript
复制
PUT /user
{
  "settings": {
    "index": {
      "number_of_shards": 3,  
      "number_of_replicas": 2 
    }
  }
}
创建索引并显示指定映射信息

显示的指定字段的数据类型:

代码语言:javascript
复制
PUT /user
{
  "mappings": {
    "properties": {
      "age":    { "type": "integer" },  
      "email":  { "type": "keyword"  }, 
      "name":   { "type": "text"  }     
    }
  }
}

数据类型可以参考官网:Field data types

查询索引信息

请求:

代码语言:javascript
复制
GET /user

响应:

代码语言:javascript
复制
{
  "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:索引名称。

删除索引

请求:

代码语言:javascript
复制
DELETE /user

响应:

代码语言:javascript
复制
{
  "acknowledged" : true
}

更多索引操作可以参考官网:Index APIs

文档操作
创建文档

请求:

代码语言:javascript
复制
POST /user/_doc/
{
  "age":18,
  "email":"asd.qq.com",
  "name":"buhe"
}

响应:

代码语言:javascript
复制
{
  "_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查询文档数据

请求:

代码语言:javascript
复制
GET /user/_doc/Q2i2y3kB7sfcwRgV3OlC

响应:

代码语言:javascript
复制
{
  "_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格式的文档数据。

修改文档

请求:

代码语言:javascript
复制
POST user/_update/Q2i2y3kB7sfcwRgV3OlC
{
    "doc":{
      "age" : 38
    }
}

响应:

代码语言:javascript
复制
{
  "_index" : "user",
  "_type" : "_doc",
  "_id" : "Q2i2y3kB7sfcwRgV3OlC",
  "_version" : 5,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 28,
  "_primary_term" : 1
}
删除文档

请求:

代码语言:javascript
复制
DELETE /user/_doc/Q2i2y3kB7sfcwRgV3OlC

响应:

代码语言:javascript
复制
{
  "_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结束。

第一行为元数据,第二行为有效载体,例如批量创建文档如下:

代码语言:javascript
复制
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不是原子操作,对应每个命令都会有一个执行结果,即使某个命令执行失败也不会影响其他命令的执行。响应:

代码语言:javascript
复制
{
  "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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-06-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • Kibana安装和使用
    • 安装Kibana
      • 修改Kibana配置文件
        • 启动Kibana
          • Kibana使用
          • 索引操作
            • 创建索引
              • 索引名称需要满足以下条件
                • 创建具有特定设置的索引
                  • 创建索引并显示指定映射信息
                    • 查询索引信息
                      • 删除索引
                      • 文档操作
                        • 创建文档
                          • 通过文档id查询文档数据
                            • 修改文档
                              • 删除文档
                                • 文档的批量操作
                                相关产品与服务
                                Elasticsearch Service
                                腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档