【Elasticsearch】Elasticsearch索引创建与管理详解
文章目录
- 📑引言
- 一、Elasticsearch 索引的基础概念
- 二、创建索引
- 2.1 使用默认设置创建索引
- 2.2 自定义设置创建索引
- 2.3 创建索引并设置映射
- 三、索引模板
- 3.1 创建索引模板
- 3.2 使用索引模板创建索引
- 四、管理索引
- 4.1 查看索引
- 4.2 更新索引设置
- 4.3 删除索引
- 五、索引别名
- 5.1 创建索引别名
- 5.2 使用别名查询
- 5.3 更新索引别名
- 六、分片和副本管理
- 6.1 分片
- 6.2 副本
- 七、索引性能优化
- 7.1 分片数量的选择
- 7.2 动态调整副本
- 7.3 索引刷新间隔
- 八、索引模板的高级应用
- 九、索引管理工具
- 9.1 Kibana
- 9.2 Curator
📑引言
Elasticsearch 是一个基于 Apache Lucene 的开源搜索引擎,具有分布式、近实时、RESTful API 等特点。索引是 Elasticsearch 的核心概念之一,索引的创建和管理是使用 Elasticsearch 的基础技能。本文将详细介绍 Elasticsearch 索引的创建与管理,包括索引的基础概念、创建索引、索引模板、映射和索引别名等内容。
一、Elasticsearch 索引的基础概念
在 Elasticsearch 中,索引类似于传统数据库中的数据库。一个索引包含了多个文档,而每个文档都包含了多个字段。以下是一些关键概念:
- 文档(Document):Elasticsearch 中的数据单位,类似于数据库中的一行数据。
- 索引(Index):包含多个文档,类似于数据库中的数据库。
- 类型(Type):在较早版本的 Elasticsearch 中,索引中的一种逻辑划分,现已弃用。
- 分片(Shard):索引可以分为多个分片,以实现水平扩展和高可用性。
- 副本(Replica):分片的备份,以提高数据的容错能力。
二、创建索引

2.1 使用默认设置创建索引
Elasticsearch 提供了简单的创建索引的方法,只需发送一个 HTTP 请求即可。
PUT /my_index
这个命令将在 Elasticsearch 中创建一个名为 my_index 的索引,使用默认的设置和映射。
2.2 自定义设置创建索引
可以在创建索引时自定义分片、副本和其他设置。
PUT /my_index
{"settings": {"number_of_shards": 3,"number_of_replicas": 2}
}
这将创建一个名为 my_index 的索引,包含 3 个主分片和 2 个副本。
2.3 创建索引并设置映射
映射定义了索引中字段的类型及其属性,可以在创建索引时一起定义。
PUT /my_index
{"settings": {"number_of_shards": 3,"number_of_replicas": 2},"mappings": {"properties": {"name": {"type": "text"},"age": {"type": "integer"},"created_at": {"type": "date","format": "yyyy-MM-dd"}}}
}
这个命令创建了一个索引,并定义了三个字段:name(文本类型)、age(整数类型)和 created_at(日期类型)。
三、索引模板
索引模板允许你为符合特定模式的索引设置默认配置和映射,当索引名称符合模板定义的模式时,会自动应用模板中的设置和映射。
3.1 创建索引模板
PUT /_template/my_template
{"index_patterns": ["my_index_*"],"settings": {"number_of_shards": 1},"mappings": {"properties": {"name": {"type": "text"},"age": {"type": "integer"}}}
}
这个模板将应用于所有以 my_index_ 开头的索引,并自动设置其分片数量和映射。
3.2 使用索引模板创建索引
当创建符合模板模式的索引时,模板会自动应用:
PUT /my_index_2024
这个命令将创建一个名为 my_index_2024 的索引,并应用 my_template 中定义的设置和映射。
四、管理索引
4.1 查看索引
可以使用以下命令查看索引的详细信息:
GET /my_index
这个命令将返回索引的配置信息和状态。
4.2 更新索引设置
索引创建后,可以动态更新一些设置,例如副本数量:
PUT /my_index/_settings
{"number_of_replicas": 1
}
4.3 删除索引
可以使用以下命令删除索引:
DELETE /my_index
这个命令将删除 my_index 索引及其所有数据。
五、索引别名
索引别名允许你为一个或多个索引创建别名,以便于查询和管理。
5.1 创建索引别名
POST /_aliases
{"actions": [{"add": {"index": "my_index","alias": "my_index_alias"}}]
}
这个命令为 my_index 创建了一个别名 my_index_alias。
5.2 使用别名查询
GET /my_index_alias/_search
{"query": {"match_all": {}}
}
这个查询将通过别名 my_index_alias 查询 my_index 中的所有文档。
5.3 更新索引别名
可以动态更新别名,例如将别名指向另一个索引:
POST /_aliases
{"actions": [{"remove": {"index": "my_index","alias": "my_index_alias"},"add": {"index": "new_index","alias": "my_index_alias"}}]
}
这个命令将 my_index_alias 从 my_index 移除,并指向 new_index。
六、分片和副本管理
6.1 分片
分片是 Elasticsearch 用于水平扩展和分布式存储的基本单位。每个索引可以分为多个主分片(Primary Shard),每个主分片可以有多个副本分片(Replica Shard)。分片的数量在索引创建时设置,并且一旦设置就不能更改,但副本数量可以动态调整。
分片的优点包括:
- 扩展性:可以将数据分布到多个节点上,提高存储和处理能力。
- 高可用性:通过副本分片提供容错能力,当主分片失效时,副本分片可以提升为主分片。
6.2 副本
副本分片是主分片的完整拷贝,用于提供高可用性和读取性能。当一个节点失效时,副本分片可以确保数据不会丢失并继续提供服务。
七、索引性能优化
7.1 分片数量的选择
在创建索引时,选择适当的分片数量是优化索引性能的关键。过多的分片会导致资源浪费,过少的分片会导致性能瓶颈。可以根据数据量和节点数量来合理设置分片数量。
7.2 动态调整副本
在读多写少的场景中,可以增加副本数量以提高读取性能。在写多读少的场景中,可以减少副本数量以提高写入性能和减少开销。
7.3 索引刷新间隔
默认情况下,Elasticsearch 每秒会刷新一次索引,将新数据写入磁盘。在批量写入数据时,可以适当增加刷新间隔以提高写入性能,减少 I/O 开销。
PUT /my_index/_settings
{"index": {"refresh_interval": "30s"}
}
八、索引模板的高级应用
动态模板
动态模板允许根据字段名称或数据类型自动应用特定的映射规则,适用于需要灵活处理不同字段的情况。
PUT /_template/dynamic_template_example
{"index_patterns": ["dynamic_*"],"mappings": {"dynamic_templates": [{"strings_as_keywords": {"match_mapping_type": "string","mapping": {"type": "keyword"}}}]}
}
这个动态模板会将所有以 dynamic_ 开头的索引中的字符串字段映射为 keyword 类型。
九、索引管理工具
9.1 Kibana
Kibana 是 Elasticsearch 的数据可视化和管理工具,提供了直观的界面来管理和查询 Elasticsearch 索引。可以通过 Kibana 查看索引状态、执行查询和分析数据。
9.2 Curator
Curator 是 Elasticsearch 的索引管理工具,提供了一组命令行工具来管理索引生命周期。可以使用 Curator 定期删除旧索引、优化索引和管理快照。
相关文章:
【Elasticsearch】Elasticsearch索引创建与管理详解
文章目录 📑引言一、Elasticsearch 索引的基础概念二、创建索引2.1 使用默认设置创建索引2.2 自定义设置创建索引2.3 创建索引并设置映射 三、索引模板3.1 创建索引模板3.2 使用索引模板创建索引 四、管理索引4.1 查看索引4.2 更新索引设置4.3 删除索引 五、索引别名…...
[数据集][目标检测]棉花检测数据集VOC+YOLO格式389张1类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):389 标注数量(xml文件个数):389 标注数量(txt文件个数):389 标注类别…...
使用Java实现实时数据处理系统
使用Java实现实时数据处理系统 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 引言 在当今信息爆炸的时代,实时数据处理系统变得越来越重要。无论…...
整合web-socket的常见bug
整合文章连接 此文是记录我上网查找整合方案时候踩的坑,特别是注册失败的问题,比如还有什么去掉Compoent就可以,但是这样这个端点就失效了 特别是报错: at org.springframework.web.socket.server.standard.ServerEndpointExporter.registerEndpoint(ServerEndpointExporter.…...
Python 中字符串的常用操作都有哪些?
在 Python 中字符串的表达方式有四种 一对单引号 一对双引号 一对三个单引号 一对三个双引号 a ‘abc’ b “abc” c ‘’‘abc’’’ d “”“abc”"" print(type(a)) # <class ‘str’> print(type(b)) # <class ‘str’> print(type©) # <…...
FFmpeg 硬件编码加速文档介绍
介绍 硬件访问:许多平台提供了对专用硬件的访问,这些硬件可以用于执行解码、编码或过滤等视频相关操作。 性能与资源使用:使用硬件可以加快某些操作的速度或减少其他资源(特别是CPU)的使用,但可能会产生不同的结果或质量较低,或带来在使用纯软件时不存在的额外限制。 硬…...
【Matlab函数分析】imread从图形文件读取图像
🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好🤗ᾑ…...
零基础光速入门AI绘画,SD保姆攻略
前言 大家好,我是AI绘画咪酱。一名AIGC狂热爱好者,目前正在AI绘画领域进行深入的探索。 我花了一个月时间把SD研究了一遍,秉持着用有趣、易懂的文字让小白也可以零基础光速使用SD(stable diffusion)入门AI绘画&#…...
详细配置SQL Server的链接服务器(图文操作Mysql数据库)
目录 前言1. MySQL ODBC 驱动2. 配置 SQL Server 链接服务器3. 彩蛋前言 此处配置以及安装没有什么理论知识 所以直奔主题,跟着以下步骤配置安装即可 需求:准备在10.197.0.110中链接外部的10.197.0.96的mysql数据源 已默认在10.197.0.96中安装了MySQL数据库并且知道其连接信…...
DDD学习笔记五
模型引力场:聚合 强作用力体现: 某个领域模型是另一些模型存在的前提,没有前者,后者就失去了生存的意义。 一组领域模型之间存在关联的领域逻辑,任何时候都不能违反。 一组领域模型必须以一个完整的、一致的状态呈现给…...
CAN报文的发送类型-OnChange、OnWrite、IfActive、Repetition
CAN报文的发送类型分为基本发送类型和混合发送类型两大类 CAN基本发送类型包括Cyclic周期发送、OnChange变化时发送、OnWrite写入时发送和IfActive有效时发送。基本发送类型中的Cyclic称为周期型,而其他3个类型称为事件型(Event)。发送次数是通过定义Repetition重复次数来实…...
神经网络在机器学习中的应用:手写数字识别
机器学习是人工智能的一个分支,它使计算机能够从数据中学习并做出决策或预测。神经网络作为机器学习的核心算法之一,因其强大的非线性拟合能力而广泛应用于各种领域,包括图像识别、自然语言处理和游戏等。本文将介绍如何使用神经网络对MNIST数…...
QT拖放事件之四:自定义拖放操作-利用QDrag来拖动完成数据的传输-案例demo
1、核心代码 #include "Widget.h" #include "ui_Widget.h" #include "MyButton.h"Widget::Widget(QWidget *parent): QWidget...
Spring Boot应用的部署与扩展
Spring Boot应用的部署与扩展 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 引言 Spring Boot作为现代化Java应用的首选框架之一,以其简化的配置…...
Spring底层原理之bean的加载方式八 BeanDefinitionRegistryPostProcessor注解
BeanDefinitionRegistryPostProcessor注解 这种方式和第七种比较像 要实现两个方法 第一个方法是实现工厂 第二个方法叫后处理bean注册 package com.bigdata1421.bean;import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.…...
大数据面试题之Spark(5)
Spark SQL与DataFrame的使用? Sparksql自定义函数?怎么创建DataFrame? HashPartitioner和RangePartitioner的实现 Spark的水塘抽样 DAGScheduler、TaskScheduler、SchedulerBackend实现原理 介绍下Sparkclient提交application后,接下来的流程? Spark的几种…...
springboot笔记示例六:fastjson2集成
springboot笔记示例六:fastjson2集成 本文md下载 https://download.csdn.net/download/a254939392/89491102本文md文档下载地址 #springboot json官方说明 https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-json.htmlsprin…...
VLOOKUP函数在表格的简单运用-两个表匹配
1.什么是VLOOKUP? VLOOKUP是Excel中的一个内置函数,主要用于在区域或表格的首列查找指定的值,并返回该行中其他列的值。它特别适用于跨表格数据匹配 2.函数运用 2.1.这边两个表取名a表和b表,做为我们的实例表。 表格a包含&…...
http.cookiejar.LoadError: Cookies file must be Netscape formatted,not JSON.解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...
逻辑操作符
目录 && --- 逻辑与操作符 || --- 逻辑或操作符 && --- 逻辑与操作符 逻辑与操作符有并且的意思,一般用于判断语句中 逻辑与操作符运行规则是都要为真,才会继续执行或计算 360笔试题: 有关前置(--),后置(-…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
k8s从入门到放弃之Pod的容器探针检测
k8s从入门到放弃之Pod的容器探针检测 在Kubernetes(简称K8s)中,容器探测是指kubelet对容器执行定期诊断的过程,以确保容器中的应用程序处于预期的状态。这些探测是保障应用健康和高可用性的重要机制。Kubernetes提供了两种种类型…...
C#最佳实践:为何优先使用as或is而非强制转换
C#最佳实践:为何优先使用as或is而非强制转换 在 C# 的编程世界里,类型转换是我们经常会遇到的操作。就像在现实生活中,我们可能需要把不同形状的物品重新整理归类一样,在代码里,我们也常常需要将一个数据类型转换为另…...
Linux系统:进程间通信-匿名与命名管道
本节重点 匿名管道的概念与原理匿名管道的创建命名管道的概念与原理命名管道的创建两者的差异与联系命名管道实现EchoServer 一、管道 管道(Pipe)是一种进程间通信(IPC, Inter-Process Communication)机制,用于在不…...
记一次spark在docker本地启动报错
1,背景 在docker中部署spark服务和调用spark服务的微服务,微服务之间通过fegin调用 2,问题,docker容器中服务器来后,注册中心都有,调用服务也正常,但是调用spark启动任务后报错,报错…...
