【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

封面.png

📑引言

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_aliasmy_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 定期删除旧索引、优化索引和管理快照。

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

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

相关文章

掌握高效实用的VS调试技巧

🔥 个人主页:大耳朵土土垚 1.编程常见的错误 1.1编译型错误 编程编译型错误是指在编译代码时发现的错误。编译器在编译过程中会检查代码是否符合语法规范和语义要求,如果发现错误会产生编译错误。 直接看错误提示信息(双击&#…

超声波气象站的工作原理

TH-CQX5超声波气象站中的超声波技术是其核心工作原理之一,以下是关于超声波气象站中超声波的详细解释:超声波是一种频率高于人耳能听到的声音频率范围的声波,通常指频率在20kHz以上的声波。超声波具有较短的波长和强的穿透能力,能…

相机,手机,行车记录仪及监控视频修复软件: Stellar Repair for Video

天津鸿萌科贸发展有限公司是 Stellar 系列数据恢复软件的授权代理商。 Stellar Repair for Video 是一款强大的工具,用于修复从主流相机品牌(如佳能、尼康、索尼)、行车记录仪、监控录像机、手机和其他视频设备拍摄的无法访问和损坏的视频。…

zabbix 配置企业微信告警

1、申请一个企业微信, 官网链接 2、群内申请一个机器人 下载电脑版企业微信,登录后,在要接收群消息的群里,点击右上角三个点,添加机器人后,保存机器人的webhook地址 上传应用logo,填写应用名称…

MySQL—创建和修改数据表结构

创建表 实例: CREATE TABLE user (id INT,name VARCHAR(255),password VARCHAR(255),birthday DATE) CHARACTER SET utf8 COLLATE utf8_bin ENGINE INNODB; 显示数据库中的表 show tables from hsp; 显示表结构 desc dept; 修改表 实例: 代码&…

Vue85-Vuex的求和案例

一、需求 二、开发 2-1、index.js中vuex的代码 注意: 书写格式:actions中的函数名用小写!mutations中的函数名,用大写。 注意: 2-2、组件count.vue中的代码 2-3、代码优化 三、actions中的context参数 此写法的后…

网安小贴士(6)TCP/IP分层

一、前言 1983年,美国国防部决定将TCP/IP作为所有计算机网络的标准协议,这标志着TCP/IP正式成为互联网的基础协议。随着个人计算机的普及和网络技术的发展,TCP/IP模型被广泛应用于各种网络环境中,包括局域网(LAN&#…

天行健咨询|六西格玛绿带培训是投资未来,还是金钱的“黑洞”?

六西格玛绿带培训,作为一种被众多企业推崇的培训课程,自然成为了众多职场人士关注的焦点。然而,面对培训的高昂费用和时间成本,很多人开始质疑:参加六西格玛绿带培训,到底是投资还是浪费钱?深圳…

前端重点之:Vue+websocket通信详细用法和websocket心跳机制的使用,websocket断开实时监测,websocket实时通信

今年年初找工作,好多gou面试官总喜欢问关于websocket通信的使用方式,此次又用到了,在此做个总结:主要包含websocket的具体使用方法,和重点:(心跳机制的使用),就是主要是前端实时监测websocket是否有断连和数据的处理 在前端开发中,WebSocket 是一种常见的技术,用于…

安华金和—可信数据空间助力公共数据授权运营安全有序开展的实践探索

伴随数字化、网络化和智能化的快速发展,数字经济与实体经济深度融合,数据已然成为经济发展赖以依托的基础性、战略性资源,对社会生产、分配、流通、消费和社会服务管理等各环节产生深刻影响。我国高度重视数字经济发展,将数据列入…

构造函数深入理解

目录 构造函数构造函数体赋值初始化列表初始化列表格式初始化列表的意义以及注意点const修饰的成员变量初始化对象成员具体初始化的地方缺省值存在的意义例子1例子2 初始化与赋值引用成员变量的初始化注意点1注意点2我的疑惑 自定义类型成员初始化例子1例子2例子3例子4 初始化列…

Sentinel链路流控模式失效的解决方法

解决方法 1、在pom.xml中增加sentinel-web-servlet的依赖&#xff0c;我使用的版本是1.7.1 <dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-web-servlet</artifactId> </dependency>2、在项目中添加一个FilterCon…

J-Flash刷机的步骤

1、Keil编译代码&#xff0c;生成文件&#xff1a;E:\automotive\xxx.axf 2、打开"SEGGER J-Flash V7.88k"&#xff0c;配置Project information 3、点击菜单栏中的"File"&#xff0c;open data file&#xff0c;找到所需的xxx.axf文件 4、按快捷键F7进…

Yolov8模型调参大全:超详细解读每一个参数

目录 1. 代码获取方式 2. YOLOv8网络配置 3. Yolov8使用 3.1. CLI 3.2. Python 4.default.yaml文件解读 1. 代码获取方式 Yolov8项目地址&#xff1a;https://github.com/ultralytics/ultralytics 这里就不详细介绍v8了 2. YOLOv8网络配置 # Ultralytics YOLO &…

利用多模态大模型解决旅行商问题

概述 ○ 该研究论文提出了一种利用多模态大型语言模型&#xff08;MLLM&#xff09;的视觉推理能力来解决旅行商问题&#xff08;TSP&#xff09;和多旅行商问题&#xff08;mTSP&#xff09;的新方法。 ○ 传统方法依赖于节点坐标和距离矩阵&#xff0c;而本研究则采用多智能…

ueditor解决无法抓取远程背景图片问题的方法(php)

背景 laravel后台经常有用到编辑器的地方&#xff0c;Dcat使用的一般都是UEditor编辑器。最近项目经理在秀米排版以后&#xff0c;将内容复制到UEditor编辑器保存后发现&#xff0c; 在网站页面中发现图片竟然展示失败。经过浏览器控制台发现&#xff0c;图片的域名还是秀米的…

HMI 的 UI 风格创新无限

HMI 的 UI 风格创新无限

变频器配置V20

变频器控制最好是变频电机&#xff0c;在速度不低的情况下工频电机 改变电机转速&#xff0c;调节扭矩&#xff0c; 变频器 L1 L2 L3 ,R S T 电机输入 uvw 电机输出 FSD 制动电阻 设置步骤 恢复出厂设置 p0010:30 p0970:21p0003:3(设定访问级别) P0003 用户访问级别 0 - 4 1…

cadence symbol修改之一

cdaence virtuoso 复制cell&#xff0c;或者拷贝symbol之后&#xff0c;再次调用的时候&#xff0c;symbol还是跟随原来的cell名字 解决办法 打开对应的symbol 修改partName为 cellName

RK3568驱动指南|第十六篇 SPI-第190章 配置模式下寄存器的配置

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…