袁庭新ES系列08节 | 使⽤Kibana对索引库操作

前言

从这一章节开始,袁老师正式带领同学们来学习Elasticsearch的相关语法。首先我们对索引库的相关概念会进行探索,然后介绍如何使用Kibana对索引库进行操作。

一. 基本概念

1.节点(node)

一个节点是一个Elasticsearch的实例。

在服务器上启动Elasticsearch之后,就拥有了一个节点。如果在另一台服务器上启动Elasticsearch,这就是另一个节点。甚至可以通过启动多个Elasticsearch进程,在同一台服务器上拥有多个节点。

2.集群(cluster)

多个协同工作的Elasticsearch节点的集合被称为集群。

在多节点的集群上,同样的数据可以在多台服务器上传播,这有助于性能,这同样有助于稳定性,如果每个分片至少有一个副本分片,那么任何一个节点宕机后,Elasticsearch依然可以进行服务,返回所有数据。

但是它也有缺点:必须确定节点之间能够足够快速地通信,并且不会产生脑裂效应(集群的2个部分不能彼此交流,都认为对方宕机了)。

3.分片(shard)

索引可能会存储大量数据,这些数据可能超过单个节点的硬件限制。例如,十亿个文档的单个索引占用了1TB的磁盘空间,可能不适合单个节点的磁盘,或者可能太慢而无法单独满足来自单个节点的搜索请求。

为了解决此问题,Elasticsearch提供了将索引细分为多个碎片的功能。创建索引时,只需定义所需的分片数量即可。每个分片本身就是一个功能齐全且独立的“索引”,可以托管在群集中的任何节点上。

分片很重要,主要有两个原因:

  • 它允许您水平分割/缩放内容量。
  • 它允许您跨碎片(可能在多个节点上)分布和并行化操作,从而提高性能/吞吐量。

分片如何分布以及其文档如何聚合回到搜索请求中的机制完全由Elasticsearch管理,并且对您作为用户是透明的。

在随时可能发生故障的网络/云环境中非常有用,强烈建议您使用故障转移机制,以防碎片/节点因某种原因脱机或消失。为此,Elasticsearch允许您将索引分片的一个或多个副本制作为所谓的副本分片(简称副本)。

4.副本(replica)

分片处理允许用户推送超过单机容量的数据至Elasticsearch集群。副本则解决了访问压力过大时单机无法处理所有请求的问题。

分片可以是主分片,也可以是副本分片,其中副本分片是主分片的完整副本。副本分片用于搜索,或者是在原有的主分片丢失后成为新的主分片。

注意:可以在任何时候改变每个分片的副本分片的数量,因为副本分片总是可以被创建和移除的。这并不适用于索引划分为主分片的数量,在创建索引之前,必须决定主分片的数量。过少的分片将限制可扩展性,但是过多的分片会影响性能。默认设置的5份是一个不错的开始。

5.文档(document)

Elasticsearch是面向文档的,这意味着索引和搜索数据的最小单位是文档。在Elasticsearch中文档有几个重要的属性。

  • 它是自我包含的。一篇文档同时包含字段和它们的取值。
  • 它可以是层次的。文档中还包含新的文档,字段还可以包含其他字段和取值。例如,“location”字段可以同时包含“city”和“street“两个字段。
  • 它拥有灵活的结构。文档不依赖于预先定义的模式。并非所有的文档都需要拥有相同的字段,它们不受限于同一个模式。

6.类型(type)

类型是文档的逻辑容器,类似于表格是行的容器。在不同的类型中,最好放入不同结构的文档。例如,可以用一个类型定义聚会时的分组,而另一个类型定义人们参加的活动。

7.索引(index)

索引是映射类型的容器。一个Elasticsearch索引是独立的大量的文档集合。每个索引存储在磁盘上的同组文件中,索引存储了所有映射类型的字段,还有一些设置。

8.映射(mapping)

所有文档在写入索引前都将被分析,用户可以设置一些参数,决定如何将输入文本分割为词条,哪些词条应该被过滤掉,或哪些附加处理有必要被调用(比如移除HTML标签)。这就是映射扮演的角色,存储分析链所需的所有信息。

Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的。对比关系:

索引库(Indices) => 数据库(Database)

类型(Type) => 数据表(Table)

文档(Document) => 行(Row)

域字段(Field) => 列(Columns)

映射配置(Mappings) => 每个列的约束(类型、长度)

详细说明:

概念

说明

类型(Type)

类型是模拟MySQL中的Table概念,一个索引库下可以有不同类型的索引(目前6.X以后的版本只能有一个类型),类似数据库中的表概念。数据库表中有表结构,也就是表中每个字段的约束信息;索引库的类型中对应表结构的叫做映射(Mapping),用来定义每个字段的约束

文档(Document)

存入索引库原始的数据。比如每一条商品信息,就是一个文档

字段(Field)

文档中的属性

映射配置(Mappings)

字段的数据类型、属性、是否索引、是否存储等特性

二. 索引基本操作

1.创建索引库

1.1 创建索引库语法

Elasticsearch采用RESTful风格API,因此其API就是一次HTTP请求,你可以用任何工具发起HTTP请求。

创建索引的请求格式:

  • 请求方式: PUT
  • 请求路径: /索引库名
  • 请求参数: JSON格式

语法结构见下:

{
  "settings": {
    "属性名": "属性值"
  }
}

settings:就是索引库设置,其中可以定义索引库的各种属性,目前我们可以不设置,都走默认。

1.2 使用Kibana创建索引库

Kibana的控制台,可以对HTTP请求进行简化。相当于是省去了Elasticsearch的服务器地址。而且还有语法提示,非常便捷和舒服。

语法格式:

PUT /索引库名

1.使用Kibana创建yx索引库。

PUT /yx

2.在Kibana的Console窗口点击绿色按钮发送请求,响应结果见下。

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

2.查看索引库

GET请求可以帮我们查看索引信息,语法格式:

GET /索引库名

1.使用Kibana查询yx索引库。

GET /yx

2.响应结果见下。

{
  "yx": {
    "aliases": {},
    "mappings": {},
    "settings": {
      "index": {
        "creation_date": "1670332544067",
        "number_of_shards": "5",
        "number_of_replicas": "1",
        "uuid": "RQ2CUAEGR4uofhmgJIsNKg",
        "version": {
          "created": "6020499"
        },
        "provided_name": "yx"
      }
    }
  }
}

3.删除索引库

删除索引使用DELETE请求。语法格式:

DELETE /索引库名

1.使用Kibana删除yx索引库。

DELETE /yx

2.响应结果见下。

{
  "acknowledged": true
}

三. 结语

本章节袁老师主要给同学们介绍了节点、集群、分片、副本、文档、类型、索引和映射等核心的概念。然后我们介绍了如何使用Kibana操作索引库,包括对索引库的创建、查看和删除。需要同学们能够熟练掌握索引库操作的基本语法。

今天的内容就分享到这里吧。关注「袁庭新」,干货天天都不断!

  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值