ElasticSearch7.x入门教程之索引概念和基础操作(三)

文章目录


前言

要想熟悉使用ES的索引,则必须理解索引相关的概念,尤其是在工作当中。

在此记录,方便开展工作。


一、索引基本概念

尽量以通俗的话语。

  • 1、集群(Cluster):一个或者多个安装了 es 节点(单个服务器)的服务器组织在一起,就是集群,这些节点共同持有数据,共同提供搜索服务。

一个集群有一个名字,这个名字是集群的唯一标识,该名字成为 cluster name,默认的集群名称是 elasticsearch,具有相同名称的节点才会组成一个集群。在config/elasticsearch.yml 文件中配置集群名称:

bash 复制代码
cluster.name: my-es-app

在集群中,节点的状态有三种:绿色、黄色、红色,准确的说应该是索引分片的状态;
绿色:节点运行状态为健康状态。所有的主分片、副本分片都可以正常工作。
黄色:表示节点的运行状态为警告状态,所有的主分片目前都可以直接运行,但是至少有一个副本分片是不能正常工作的。
红色:表示集群无法正常工作。

  • 2、节点(Node)

    集群中的一个服务器就是一个节点,节点中会存储数据,同时参与集群的索引以及搜索功能。一个节点想要加入一个集群,只需要配置一下集群名称即可。默认情况下,如果我们启动了多个节点,多个节点还能够互相发现彼此,那么它们会自动组成一个集群,这是 es 默认提供的,但是这种方式并不可靠,有可能会发生脑裂现象。所以在实际使用中,建议一定手动配置一下集群信息。

  • 3、索引(Index)

    索引可以从两方面来理解:
    名词:具有相似特征文档的集合。
    动词:索引数据以及对数据进行索引操作。

  • 4、类型(Type)
    类型是索引上的逻辑分类或者分区。在 es6 之前,一个索引中可以有多个类型,从 es7 开始,一个索引中,只能有一个类型。在 es6.x 中,依然保持了兼容,依然支持单 index 多个 type 结构,但是已经不建议这么使用。

  • 5、文档(Document)

    一个可以被索引的数据单元。例如一个用户的文档、一个产品的文档等等。文档都是 JSON 格式的。

  • 6、分片(Shards)

    索引都是存储在节点上的,但是受限于节点的空间大小以及数据处理能力,单个节点的处理效果可能不理想,此时我们可以对索引进行分片。当我们创建一个索引的时候,就需要指定分片的数量。每个分片本身也是一个功能完善并且独立的索引。
    默认情况下,一个索引会自动创建 1 个分片,并且为每一个分片创建一个副本。

  • 7、副本(Replicas)

    副本也就是备份,是对主分片的一个备份。

  • 8、Settings

    集群中对索引的定义信息,例如索引的分片数、副本数等等。

  • 9、Mapping(映射)

    Mapping 保存了定义索引字段的存储类型、分词方式、是否存储等信息。

  • 10、Analyzer

    字段分词方式的定义。

最后,和关系型数据库对比:

关系数据库 ElasticSearch
数据库 索引
类型
文档
字段
表结构 字段映射Mapping
SQL DSL(Domain Specific Language)
select * from table GET http://
update table set field = value PUT http://
delete from table DELETE http://
索引 全文索引

二、索引基本使用

在工作当中,最好结合上一篇文章的elasticsearch-head插件和Kibana两个工具使用,既可以可视化创建、查看,也可以代码DSL语言查询。

elasticsearch-head插件

elasticsearch-head插件比较简单,如下图:

新建索引:

结果展示:

说明

0、1、2、3、4 分别表示索引的分片,粗框表示主分片,细框表示副本(点一下框,通过 primary 属性可以查看是主分片还是副本)。.kibana 索引只有一个分片和一个副本,所以只有 0。

这个比较简单,就不在说了。个人觉得这个很好方便查看分片情况和简单的查询。

会使用Kibana查询之后,使用这个就更加简单。

Kibana使用

基于上一篇文章安装的Kibana,如下图:

点击下面的Dev Tools工具菜单,就可以在右边编写DSL查询语句,查询数据了。

  • 1、创建索引请求:
    单纯的创建索引,没有设置字段映射。
bash 复制代码
# 默认副本为1
PUT book

注意:索引名称不能有大写字母、索引名是唯一的,不能重复,重复创建会出错。

  • 2、更新索引
    索引创建好之后,可以修改其属性。
    例如修改索引的副本数:
bash 复制代码
PUT book/_settings
{
  "number_of_replicas": 2
}
  • 3、修改索引的读写权限
    默认情况下,索引是具备读写权限的,当然这个读写权限可以关闭。
bash 复制代码
# 关闭索引的写权限:
PUT book/_settings
{
  "blocks.write": true
}

# 打开索引的写权限
PUT book/_settings
{
  "blocks.write": false
}

其他类似的权限有:

blocks.write、blocks.read、blocks.read_only;

  • 4 查看索引
bash 复制代码
GET book/_settings

# 同时查看多个索引信息:
GET book,test/_settings

# 查看所有索引信息:
GET _all/_settings
  • 5、删除索引
    head 插件可以删除索引。
    Kibana删除索引。
bash 复制代码
DELETE test

删除一个不存在的索引会报错。

  • 6、索引打开/关闭
bash 复制代码
# 关闭
关闭索引
POST book/_close

# 打开索引
POST book/_open

当然,可以同时关闭/打开多个索引,多个索引用 , 隔开,或者直接使用 _all 代表所有索引。

  • 7、索引别名
    可以为索引创建别名,如果这个别名是唯一的,该别名可以代替索引名称。
bash 复制代码
POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "book",
        "alias": "book_alias"
      }
    }
  ]
}

# 将 add 改为 remove 就表示移除别名:
POST /_aliases
{
  "actions": [
    {
      "remove": {
        "index": "book",
        "alias": "book_alias"
      }
    }
  ]
}

# 查看某一个索引的别名:
GET /book/_alias

# 查看某一个别名对应的索引(book_alias 表示一个别名):
GET /book_alias/_alias

# 可以查看集群上所有可用别名:
GET /_alias
  • 8、复制索引
    索引复制,只会复制数据,不会复制索引配置。

总结

这篇文章,简单记录了,在Kibana中,索引的基本使用,这些在工作中,确实用得上,更多信息还是查看官网文档。

相关推荐
Mitch3111 小时前
【漏洞复现】CVE-2015-3337 Arbitrary File Reading
elasticsearch·网络安全·docker·漏洞复现
Mitch3111 小时前
【漏洞复现】CVE-2015-5531 Arbitrary File Reading
web安全·elasticsearch·网络安全·docker·漏洞复现
喝醉酒的小白3 小时前
Elasticsearch(ES)监控、巡检及异常指标处理指南
大数据·elasticsearch·搜索引擎
孤水寒月5 小时前
Git忽略文件.gitignore
git·elasticsearch
LKAI.12 小时前
搭建Elastic search群集
linux·运维·elasticsearch·搜索引擎
it噩梦1 天前
elasticsearch中使用fuzzy查询
elasticsearch
喝醉酒的小白1 天前
Elasticsearch相关知识@1
大数据·elasticsearch·搜索引擎
小小工匠1 天前
ElasticSearch - 深入解析 Elasticsearch Composite Aggregation 的分页与去重机制
elasticsearch·composite·after_key·桶聚合分页
风_流沙1 天前
java 对ElasticSearch数据库操作封装工具类(对你是否适用嘞)
java·数据库·elasticsearch
TGB-Earnest1 天前
【py脚本+logstash+es实现自动化检测工具】
大数据·elasticsearch·自动化