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中,索引的基本使用,这些在工作中,确实用得上,更多信息还是查看官网文档。

相关推荐
梦幻通灵12 分钟前
ES分词环境实战
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客17 分钟前
Elasticsearch 中的热点以及如何使用 AutoOps 解决它们
大数据·运维·elasticsearch·搜索引擎·全文检索
Java 第一深情8 小时前
Linux上安装单机版ElasticSearch6.8.1
linux·elasticsearch·全文检索
KevinAha1 天前
Elasticsearch 6.8 分析器
elasticsearch
wuxingge1 天前
elasticsearch7.10.2集群部署带认证
运维·elasticsearch
Elastic 中国社区官方博客1 天前
Elasticsearch:如何部署文本嵌入模型并将其用于语义搜索
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索
Dreams°1231 天前
【大数据测试 Elasticsearch 的标准--超详细篇】
大数据·elasticsearch·jenkins
鸠摩智首席音效师1 天前
如何在 Elasticsearch 中配置 SSL / TLS ?
elasticsearch·ssl
fishjam2 天前
[开源重构]Search(Elasticsearch/OpenSearch) Sync Tool
elasticsearch·重构·开源