ES索引:索引管理

索引管理

再讲索引(Index)前,我们先对照下 ElasticSearch Vs 关系型数据库:

请在此添加图片描述

PUT /customer/_doc/1
{"name": "DLBOY"
}

系统默认是自动创建索引的

如果我们需要对这个建立索引的过程做更多的控制:

比如想要确保这个索引有数量适中的主分片,并且在我们索引任何数据之前,分析器和映射已经被建立好。

那么我们需要做两件事:第一个禁止自动创建索引,第二个是手动创建索引

禁止自动创建索引

可以通过在 config/elasticsearch.yml 的每个节点下添加下面的配置

action.auto_create_index: false

创建索引

创建一个名称为test-index-users的索引(Index)

PUT /test-index-users

请在此添加图片描述

{"acknowledged" : true,"shards_acknowledged" : true,"index" : "test-index-users"
}

这是一个Elasticsearch索引创建的响应示例,包含了以下关键信息:

  • “acknowledged”: 这是一个布尔值,表示索引的创建是否得到了确认。如果为true,则表示索引成功创建。
  • “shards_acknowledged”: 这也是一个布尔值,表示索引中的分片是否得到了确认。如果为true,则表示所有分片成功创建。
  • “index”: 这是新创建索引的名称,名称为"test-index-users"。

这个响应表明,索引"test-index-users"已成功创建,并且所有分片也得到了确认。索引创建成功后,你可以向该索引中添加文档,执行搜索操作以及执行其他与索引相关的操作。索引是Elasticsearch中组织和存储数据的重要结构。

我们创建一个user 索引test-index-users,其中包含三个属性:name,age, remarks; 存储在一个分片一个副本上。

手动创建带有mapping关系的索引

创建索引test-index-users,其中包含三个属性:name,age, remarks; 存储在一个分片一个副本上。

## 先删除掉创建过的索引
DELETE /test-index-usersPUT /test-index-users 
{"settings":{"number_of_shards":1,"number_of_replicas":1},"mappings":{"properties":{"name":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"age":{"type":"long"},"remarks":{"type":"text"}}}
}

请在此添加图片描述

Elasticsearch索引的设置(settings)和映射(mappings)的示例。让我来解释其中的各个部分:

“settings”: 这是索引的设置部分,包含了索引的全局设置。
“number_of_shards”: 这是指定索引的主分片数量。在这个示例中,设置为1,表示索引有一个主分片。主分片用于存储索引的主要数据。
“number_of_replicas”: 这是指定索引的副本数量。在这个示例中,设置为1,表示为索引创建一个副本。副本用于提高数据的冗余性和可用性。
“mappings”: 这是索引的映射部分,定义了索引中文档的结构。
“properties”: 这是文档字段的定义部分。
“name”: 这是一个名为"name"的字段,具有以下属性:
“type”: 这是字段的数据类型,这里是"text"。text数据类型通常用于全文搜索,支持分词等功能。
“fields”: 这是一个嵌套的字段定义,包含了一个名为"keyword"的子字段。
“type”: 这是子字段的数据类型,这里是"keyword"。keyword数据类型通常用于精确匹配和排序,不进行分词。
“ignore_above”: 这是一个可选的参数,用于指定在索引前多少个字符之前,不进行分词处理。在这里,设置为256,表示只有前256个字符会被索引,超过这个长度的文本将被截断。
“age”: 这是一个名为"age"的字段,具有数据类型"type":“long”,表示一个长整数类型的字段。
“remarks”: 这是一个名为"remarks"的字段,具有数据类型"type":“text”,通常用于全文搜索。

这个示例的索引定义了一些基本设置,包括主分片和副本数量,以及文档结构,包括"name"字段,包括了一个子字段"keyword","age"字段和"remarks"字段。这种映射和设置允许索引文档,支持各种查询和分析操作。

插入数据

POST /test-index-users/_doc
{"name": "goboy test name","age": "101","remarks": "hello world"
}

POST在不标记ID的时候,系统会默认帮着我们创建一个ID

请在此添加图片描述

Elasticsearch文档的索引响应示例,包含了以下关键信息:

“_index”: 这是文档所属的索引的名称,这里是"test-index-users"。
“_type”: 这是文档的类型,在Elasticsearch 7.x版本之后,通常为"_doc",表示默认文档类型。
“_id”: 这是文档的唯一标识符,用于在索引中唯一标识文档。这里是"EV_giYsBWWxO5_dDBjwQ"。
“_version”: 这是文档的版本号,表示文档的版本。在这里,文档的版本号是1。
“result”: 这是文档索引操作的结果,这里是"created",表示文档已经成功创建。
“_shards”: 这是关于文档索引操作的分片信息。
“total”: 这是总分片数量,这里是2。
“successful”: 这是成功索引的分片数量,这里是1。这表示在2个分片中的1个成功索引。
“failed”: 这是失败的分片数量,这里是0。表示没有分片索引操作失败。
“_seq_no”: 这是文档的序列号,用于跟踪文档的变化。
“_primary_term”: 这是文档所在的主分片的主要期(primary term)。

这个响应表明文档成功地被索引到了"test-index-users"索引中,索引操作是成功的,只有一个分片成功地完成了索引操作。索引操作通常用于将文档添加到Elasticsearch索引中,以便后续搜索和检索。

查看数据

请在此添加图片描述

  • 测试(age)字段与设定的数据类型不匹配的情况
POST /test-index-users/_doc
{"name": "test user","age": "error_age","remarks": "hello eeee"
}
  • 提示错误

请在此添加图片描述

修改索引

查看索引状态

curl 'localhost:9200/_cat/indices?v' | grep users

这个命令是使用curl工具查询Elasticsearch中的索引,并使用grep筛选出包含"users"的索引。在Elasticsearch中,_cat/indices端点用于获取有关索引的信息,而| grep users则用于筛选包含"users"的行。

以下是示例命令的解释:

  • curl ‘localhost:9200/_cat/indices?v’: 这是一个curl命令,用于向Elasticsearch实例发出HTTP请求,从_cat/indices端点获取索引信息。-v参数用于显示详细信息。
  • |: 这是Linux/Unix中的管道操作符,用于将前一个命令的输出作为后一个命令的输入。
  • grep users: 这是grep命令,用于筛选包含"users"的行。

当你执行这个命令时,它会列出Elasticsearch中的索引信息,并筛选出包含"users"的索引。这对于检查包含特定关键词的索引非常有用,特别是在具有大量索引的Elasticsearch集群中。请确保你的Elasticsearch实例正常运行,并且能够通过localhost:9200地址访问。

请在此添加图片描述

注意刚创建的索引的状态是yellow的,因为我测试的环境是单点环境,无法创建副本,但是在上述number_of_replicas配置中设置了副本数是1; 所以在这个时候我们需要修改索引的配置。

修改副本数量为0

PUT /test-index-users/_settings
{"settings": {"number_of_replicas": 0}
}

请在此添加图片描述

再次查看状态

curl 'localhost:9200/_cat/indices?v'| grep users

请在此添加图片描述

打开/关闭索引

关闭索引

POST /test-index-users/_close

索引关闭操作将导致该索引不可用,文档无法查询,但数据仍然存在。

请在此添加图片描述

关闭以后再查询数据时

请在此添加图片描述

打开索引

POST /test-index-users/_open

请在此添加图片描述

打开后重新插入数据

POST /test-index-users/_doc
{"name": "goboy22222 test name","age": "1001","remarks": "hello world,hello world"
}

请在此添加图片描述

查看索引

mapping

GET /test-index-users/_mapping

请在此添加图片描述

settings

GET /test-index-users/_settings

请在此添加图片描述

关于Elasticsearch索引"test-index-users"的配置信息示例,其中包含了索引的设置(settings)的详细信息。让我为你解释这个信息的各个部分:

“test-index-users”: 这是索引的名称,指定了要配置的索引,名称为"test-index-users"。
“settings”: 这是索引的设置部分,包含了关于索引的配置信息。
“index”: 这是具体索引设置的部分,包括以下属性:
“creation_date”: 这是索引的创建日期,表示为一个时间戳(以毫秒为单位)。在这里,创建日期是"1698824838360"。
“number_of_shards”: 这是主分片的数量,指定为"1",表示该索引有一个主分片。
“number_of_replicas”: 这是副本的数量,指定为"0",表示该索引没有副本。
“uuid”: 这是索引的唯一标识符(UUID),用于唯一标识索引。UUID是"qqxlOmvpR7KQMS8CT345DA"。
“version”: 这是有关索引版本的信息,包括索引的创建版本等。
“provided_name”: 这是索引的提供名称,与索引的名称相同,为"test-index-users"。

这个信息提供了关于"test-index-users"索引的详细配置信息,包括创建日期、分片数量、副本数量、UUID等。这些配置属性对于管理和维护索引非常重要,可以影响索引的性能和行为。

删除索引

将创建的test-index-users删除。

DELETE /test-index-users

Kibana管理索引

在Kibana可以查看和管理索引

请在此添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Linux安装Dcoker

目录 1、卸载(可选) 2、安装docker 3、启动docker 4、配置镜像加速 1、卸载(可选) 如果之前安装过旧版本的Docker,可以使用下面命令卸载: yum remove docker \docker-client \docker-client-latest \…

智能无损网络技术详解

什么是智能无损网络? 智能无损网络是一种集流量控制与拥塞控制于一体的先进技术,旨在提升网络性能,降低时延。同时,它通过智能无损存储网络等技术实现网络和应用系统的优化融合。该技术为AI人工智能、集中式/分布式存储以及HPC等应…

基于SSM+小程序的购物管理系统1

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM小程序的购物管理系统1,可以实现首页、个人中心、商品分类管理、商品信息管理、特价商品管理、用户管理、留言板管理、系统管理、订单管理等功能。方便用户对首页、商品…

楼梯区域分割系统:Web效果惊艳

楼梯区域分割系统源码&数据集分享 [yolov8-seg-FocalModulation&yolov8-seg-GFPN等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Global Al l…

ROS2入门学习——ROS在机器人中的运行

一、入门级基础平台TurtleBot TurtleBot 是 ROS 中重要且资源丰富的机器人之一,特别适合入门级机器人爱好者提供基础平台。用户可以直接利用其自带的软硬件,专注于应用程序的开发。TurtleBot 随着 ROS 的发展,一直处于开发前沿。 TurtleBot…

智谱发布AI助理,帮人类敲响AGI的大门

人工智能之父John McCarthy曾说:“只要AI可以开始正常工作,就不会有人再把它当AI了。”如今,这一预言正在逐渐变为现实。 10月25日,智谱AI推出了自主智能体AutoGLM,能够模拟人类操作手机,执行各种任务。 …

Profinet、Ethernet/IP 工业以太网无线通信解决方案

在工业现场,我们常常会面临这样的困扰:两个PLC之间、PLC 跟远程IO之间或者PLC 跟伺服之间由于种种原因不方便布线,严重影响了通讯效率和生产进程。为了解决这一难题,三格电子设计了一款工业以太网无线网桥,这款无线网桥…

重塑未来,开源AI数字人系统引领个性化语音新纪元!AigcPanel v0.03开启公测

你是否曾梦想拥有一个能够与你对话、与你共鸣的AI数字人伙伴?现在,这一切都不再是幻想!我们自豪地推出——全新的开源AI数字人系统,一个集视频合成、声音合成、声音克隆与模型管理于一体的创新平台,让你轻松打造专属的…

js逆向-模拟加密

实战七麦数据: 1.寻找加密入口 尝试搜索的方法: 那只能使用跟栈的方法,进入send发包位置: 打上断点,寻找加密入口,前面是发包分包,promise注意到是一个异步操作,看是否在此加密&…

Kafka社区KIP-500中文译文(去除ZooKeeper)

原文链接:KIP-500: Replace ZooKeeper with a Self-Managed Metadata Quorum - Apache Kafka - Apache Software Foundation 译者:关于Kafka3.x版本最大的一个变化即是解除了对ZooKeeper的依赖,而本文的作者是大神Colin,他高屋建瓴…

【计算机网络教程】课程 章节测试1 计算机网络概述

一. 单选题(共16题) 1 【单选题】以下关于TCP/IP参考模型缺点的描述中,错误的是( )。 A、在服务、接口与协议的区别上不很清楚 B、网络接口层本身并不是实际的一层 C、它不能区分数据链路和物理层 D、传输层对…

(蓝桥杯C/C++)——常用库函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、 二分查找 1.二分查找的前提 2.binary_ search函数 3.lower_bound和upper_bound 二、排序 1.sort概念 2.sort的用法 3.自定义比较函数 三、全排列 1.next p…

软考:24年上半年选择题

软件测试的目的是降低风险,无法100%的证明被测对象的正确性。 数字孪生: EAI企业应用集成: 线性回归技术: 嵌入式系统实时特性: 计算机信息安全:最安全的是访问验证保护级,最不安全的是用…

【Linux】从零开始使用多路转接IO --- poll

碌碌无为,则余生太长; 欲有所为,则人生苦短。 --- 中岛敦 《山月记》--- 从零开始使用多路转接IO 1 前言1 poll接口介绍3 代码编写4 总结 1 前言 上一篇文章我们学习了多路转接中的Select,其操作很简单,但有一些缺…

系统架构设计师-未来信息综合技术(2)

一、机器人技术 森政弘与合田周平提出的:“机器人是一种具有移动性、个体性、智能性、通用性、半机械半人性、自动性、奴隶性等7个特征的柔性机器。” 从这一定义出发,森政弘又提出了用自动性、智能性、个体性、半机械半人性、通用性、移动性、信息性、柔性、有限性…

知识吾爱纯净版小程序系统 leibiao SQL注入漏洞复现(XVE-2024-30663)

0x01 产品简介 知识吾爱纯净版小程序系统是一款基于微信小程序平台开发的知识付费应用,旨在帮助用户快速建立自己的知识付费平台,实现支付变现和流量主收益。它提供了简洁明了的用户界面和良好的用户体验,同时注重用户隐私保护,确保用户信息的安全存储和传输。 0x02 漏洞…

CocoaPods安装步骤详解 - 2024

引言 CocoaPods的安装,如果有VPN就一直开启,会让整个流程非常顺畅。 在现代 iOS 开发中,依赖管理变得越来越重要,CocoaPods 成为开发者们首选的依赖管理工具。它不仅可以简化库的安装与更新,还能帮助开发者更高效地管…

【计网】深入理解NAT机制,内网穿透与内网打洞,代理服务

我没胆量犯错 才把一切错过 --- 林夕 《我对不起我》--- 一文了解NAT机制,代理服务,内网穿透 1 再谈 NAT 机制2 内网穿透与内网打洞3 代理服务器 1 再谈 NAT 机制 NAT机制我们在解决IP地址不足的问题中提到过。为了解决IP地址不足的问题,采…

Docker篇(安装容器)

目录 一、安装mysql容器 1. 拉取mysql镜像 2. 创建并运行容器 二、安装Tomcat容器 1. 拉取镜像 2. 创建并运行容器 三、安装Nginx容器 1. 拉取镜像 2. 创建并运行容器 四、安装Redis容器 1. 拉取镜像 2. 创建并运行容器 五、安装RabbitMQ 1. 拉取镜像 2. 创建并运…

App Inventor 2 列表显示框能否实现多选?

Q:列表显示框有没有办法做到多选的功能? // 问题分析 // AppInventor2列表显示框原生并没有多选功能,只能点击其中一项,然后触发“选择完成时”这个事件,那么有没有办法做到多选呢? // 问题思路 // 经过…