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

文章目录

  • 前言
  • 一、索引基本概念
  • 二、索引基本使用
    • elasticsearch-head插件
    • Kibana使用
  • 总结


前言

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

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


一、索引基本概念

尽量以通俗的话语。

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

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

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
SQLDSL(Domain Specific Language)
select * from tableGET http://
update table set field = valuePUT http://
delete from tableDELETE http://
索引全文索引

二、索引基本使用

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

elasticsearch-head插件

elasticsearch-head插件比较简单,如下图:
在这里插入图片描述
新建索引:
在这里插入图片描述
结果展示:
在这里插入图片描述
说明
0、1、2、3、4 分别表示索引的分片,粗框表示主分片,细框表示副本(点一下框,通过 primary 属性可以查看是主分片还是副本)。.kibana 索引只有一个分片和一个副本,所以只有 0。

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

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

Kibana使用

基于上一篇文章安装的Kibana,如下图:
在这里插入图片描述
点击下面的Dev Tools工具菜单,就可以在右边编写DSL查询语句,查询数据了。

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

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

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

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

其他类似的权限有:
blocks.write、blocks.read、blocks.read_only;

  • 4 查看索引
GET book/_settings

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

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

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

  • 6、索引打开/关闭
# 关闭
关闭索引
POST book/_close

# 打开索引
POST book/_open

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

  • 7、索引别名
    可以为索引创建别名,如果这个别名是唯一的,该别名可以代替索引名称。
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中,索引的基本使用,这些在工作中,确实用得上,更多信息还是查看官网文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/920494.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【SQL50】day 2

目录 1.每位经理的下属员工数量 2.员工的直属部门 3.判断三角形 4.上级经理已离职的公司员工 5.换座位 6.电影评分 7.修复表中的名字 8.患某种疾病的患者 9.删除重复的电子邮箱 1.每位经理的下属员工数量 # Write your MySQL query statement below #e1是经理,…

基于 RocketMQ 实现 AMQP 协议实践

导语 在Apache CoC 2024 杭州站大会中,腾讯云高级工程师张乐为与会者带来了精彩的演讲。围绕《基于 RocketMQ 底座实现 AMQP 协议》的背景、目标、方案设计以及几个核心技术实现做了详细的阐述。 作者简介 张乐 腾讯高级工程师,负责腾讯云 RabbitMQ S…

python成绩分级 2024年6月python二级真题 青少年编程电子学会编程等级考试python二级真题解析

目录 python成绩分级 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python成绩分级 2024年6月 python编程等级考试二级编程题 一、题目要求 …

我做了一份斯坦福CS229吴恩达机器学习笔记

吴恩达教授的机器学习课程,可以说是AI领域的一块金字招牌。这门在斯坦福大学开设的课程,历经十余年,依旧是机器学习入门的经典之作。 记得当年,这门课火爆到吴恩达教授不得不将其搬到线上,结果不仅在斯坦福&#xff0c…

ABAP开发学习——SNRO

SAP凭证号码的指定分为外部给号和内部给号。 Internal number range即内部给号,指系统根据预先维护好的号码范围(只能是阿拉伯数字)依序给号,给出已有数字的下一个编号。 External number range即外部给号,后台配置时指指定一个号码范围(可以…

SpringBoot3整合Hutool-captcha实现图形验证码

文章目录 验证码需求分析:项目创建import方式的使用说明exclude方式定义接口:接口定义定义 CaptchaController前端代码在整合技术框架的时候,想找一个图形验证码相关的框架,看到很多验证码不在更新了或者是在中央仓库下载不下来,还需要多引入依赖。后面看到了Hutool **图形…

mysql-connector-java的jar包的下载方法汇总

方法一: 网址:http://mvnrepository.com/artifact/mysql/mysql-connector-java 1.进去后选择自己的版本: 2.然后再点击 3. 需要下载其他的jar包(或者依赖)都是在此网址中可以下载到的 3.1 3.2 3.3 3.4 方法二&#…

Spring Cloud Stream实现数据流处理

1.什么是Spring Cloud Stream? 我看很多回答都是“为了屏蔽消息队列的差异,使我们在使用消息队列的时候能够用统一的一套API,无需关心具体的消息队列实现”。 这样理解是有些不全面的,Spring Cloud Stream的核心是Stream&#xf…

i春秋-签到题

练习平台地址 竞赛中心 题目描述 题目内容 点击GUESS后会有辨识细菌的选择题 全部完成后会有弹窗提示 输入nickname后提示获得flag F12检查 元素中没有发现信息 检查后发现flag在控制台中 flag flag{663a5c95-3050-4c3a-bb6e-bc4f2fb6c32e} 注意事项 flag不一定要在元素中找&a…

无人机 PX4飞控 | CUAV 7-Nano 飞行控制器介绍与使用

无人机 PX4飞控 | CUAV 7-Nano 飞行控制器介绍与使用 7-Nano简介硬件参数接口定义模块连接供电部分遥控器电机 固件安装 7-Nano简介 7-Nano是一款针对小型化无人系统设备研发的微型自动驾驶仪。它由雷迅创新自主研发和生产,其创新性的采用叠层设计,在极…

怎么编译OpenWrt镜像?-基于Widora开发板

1.准备相应的环境,我使用的环境是VMware16ubuntu20.04,如图1所示安装编译所需的依赖包; sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-…

优化表单交互:在 el-select 组件中嵌入表格显示选项

介绍了一种通过 el-select 插槽实现表格样式数据展示的方案,可更直观地辅助用户选择。支持列配置、行数据绑定及自定义搜索,简洁高效,适用于复杂选择场景。完整代码见GitHub 仓库。 背景 在进行业务开发选择订单时,如果单纯的根…

SpringBoot中设置超时30分钟自动删除元素的List和Map

简介 在 Spring Boot 中,你可以使用多种方法来实现自动删除超时元素的 List 或 Map。以下是两种常见的方式: 如果你需要简单的功能并且不介意引入外部依赖,可以选择 Guava Cache。如果你想要更灵活的控制,使用 Spring 的调度功能…

使用可视化工具kafkatool连接docker的kafka集群,查看消息内容和offset

1、下载kafkatool 下载地址Offset Explorer,下载对应系统的offset explorer 下载完,傻瓜安装即可(建议放D盘),在开始菜单输入offset找到该应用打开 打开 2、连接kafka 点击File > add new connection Bootstrap…

Docker3:docker基础1

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…

BLIP-2模型的详解与思考

大模型学习笔记------BLIP-2模型的详解与思考 1、BLIP-2框架概述2、BLIP-2网络结构详解3、BLIP-2的几点思考 上一篇文章上文中讲解了 BLIP(Bootstrapping Language-Image Pretraining)模型的一些思考,本文将讲述一个BLIP的升级版 BLIP-2&am…

java-贪心算法

1. 霍夫曼编码(Huffman Coding) 描述: 霍夫曼编码是一种使用变长编码表对数据进行编码的算法,由David A. Huffman在1952年发明。它是一种贪心算法,用于数据压缩。霍夫曼编码通过构建一个二叉树(霍夫曼树&a…

RK3568平台(中断篇)ARM中断流程

一.ARM 处理器程序运行的过程 ARM芯片属于精简指令集计算机 (RISC: Reduced Instruction Set Computing),它所用的指令比较简单,有如下特点: ① 对内存只有读、写指令 ② 对于数据的运算是在CPU内部实现 ③ 使用RISC指令的CPU复杂度小一点,易于设计 比如对于 a=a+b 这…

SpringBoot与MongoDB深度整合及应用案例

SpringBoot与MongoDB深度整合及应用案例 在当今快速发展的软件开发领域,NoSQL数据库因其灵活性和可扩展性而变得越来越流行。MongoDB,作为一款领先的NoSQL数据库,以其文档导向的存储模型和强大的查询能力脱颖而出。本文将为您提供一个全方位…

项目实战(webshop)

一、搭建靶场webshop(www.example1.com) 二、信息收集 1、获取IP winR→cmd→ping www.example1.com→显示出ip(192.168.51.128) 注:TTL为IP包的生存时间,拿到TTL我们可以大概的判断一下目标机器的操作系统,但不是很准确,因为…