【Elasticsearch】Elasticsearch索引创建与管理详解

news2024/11/20 6:12:53

文章目录

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

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

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

相关文章

基于VUE3+VITE+SpringBoot+Nginx部署项目之跨域配置等问题

前言:遇到问题,解决问题。 第一部分:VUE 配置 1、vite.config.js 文件 server: {proxy: {/api: {target: env.VITE_BASE_URL,changeOrigin: true,secure: false,rewrite: path > path.replace(/^\/api/, )}}}, 2、.env 文件 VITE_BAS…

Tampermonkey 油猴脚本使用教程

Tampermonkey 油猴脚本使用教程 一、Tampermonkey 油猴脚本简介 Tampermonkey 是一款流行的浏览器扩展,它允许用户通过用户脚本增强网页功能或改变网页的外观。它支持包括 Chrome、Microsoft Edge、Safari、Opera Next 和 Firefox 在内的多种浏览器。Tampermonkey…

搭建LNMP环境实现高并发请求

LNMP和Nginx详细配置 一、LNMP环境平台搭建准备工作源码软件包安装nginxmysqlphp使用nginx连接php 二、web服务器-nginx1.学nginx之前需要了解的知识1.1 同步和异步(通知结果的方式)1.2 阻塞和非阻塞(进线程等待时状态)1.3 epoll模…

.NET 漏洞情报 | 某整合管理平台SQL注入

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

Github 2024-07-01开源项目月报 Top15

根据Github Trendings的统计,本月(2024-07-01统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目6JavaScript项目3C++项目2PHP项目1Blade项目1非开发语言项目1C#项目1Lua项目1Go项目1MDX项目1Jupyter Notebook项目1从零开始构建你喜…

AI绘画:探索人工智能与艺术的奇妙结合

前言 人工智能技术的不断发展,使得AI绘画逐渐成为艺术领域的新宠。AI绘画是指利用人工智能算法进行绘画创作的一种艺术形式,它可以模拟人类艺术家的创作过程,创造出各种独特的艺术作品。 突破传统艺术的极限:AI绘画的无限可能性 …

学习CAN协议(二):使用CAN发送数据

相关文章 学习CAN协议(一):CAN协议简介 学习CAN协议(二):使用CAN发送数据 学习CAN协议(三):使用CAN接收数据 目录 一、配置CubeMX 二、代码编写 CAN的发送示例代码…

数据资产的创新应用与未来展望:探讨数据资产在人工智能、物联网等新兴领域的应用前景,提出前瞻性的数据资产解决方案,为企业探索新的增长点,推动行业创新发展

目录 一、引言 二、数据资产在人工智能领域的应用 1、机器学习与深度学习 2、自然语言处理 3、计算机视觉 三、数据资产在物联网领域的应用 1、智能家居 2、工业物联网 3、智慧城市 四、前瞻性的数据资产解决方案 1、构建统一的数据管理平台 2、加强数据安全和隐私…

SAAM架构-系统架构师(十九)

1、(重点)(问题1)针对最终架构而非详细设计进行评估。(问题2)用于分析多种质量属性之间的折中。 问题1 A SAAM B ATAM C CBAM D SAEM 问题2 A SAAM B ATAM C CBAM D SAEM 解析: SAAM针…

3.js - MeshPhysicalMaterial - 虹彩效果

效果图 // ts-nocheck // 引入three.js import * as THREE from three // 导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls // 导入lil.gui import { GUI } from three/examples/jsm/libs/lil-gui.module.min.js // 导入tween impor…

控制台厂家的创新设计主要体现在哪几方面

在当今科技飞速发展的时代,控制台厂家面临着不断变化的市场需求和激烈的竞争,创新设计成为了他们脱颖而出的关键。这些创新设计主要体现在以下几个引人注目的方面: 人体工程学的深度融合是一大亮点。控制台厂家充分考虑操作人员长时间工作的实…

JsonCpp:更简洁的序列化及反序列化

简介 jsoncpp 提供了一组简单易用的 API&#xff0c;使得在 C 程序中处理 JSON 数据变得更加方便和高效。 安装 linux环境下安装jsoncpp sudo apt-get update sudo apt-get install --reinstall libjsoncpp-dev建立软链接确保编译器找到头文件 #include <json/json.h>…

华为HCIP Datacom H12-821 卷19

1.多选题 如图所示,RTA 的 GE0/0/0、GE0/0/1 接口分别连接部门 1 和 2,其网段分别为 10.1.2.0/24、 10.1.3.0/24 网段,为限制部门 1 和 2 之间的相互访问,在 RTA 上部署 traffic-filter,以下哪些部署方式是正 确? A、配置 ACL3000 拒绝源为 10.1.2.0/24 目的为 10.1.3.0…

智谱AI ChatGLM-4使用教程:函数调用Function calling(赠送免费500w token)

文章目录 智谱AI介绍ChatGLM介绍token资源包函数调用能力编写函数参数列表的 `JSON` 描述函数调用选择Function Call 流程实践智谱AI介绍 北京智谱华章科技有限公司(简称“智谱AI”)致力于打造新一代认知智能大模型,专注于做大模型的中国创新。公司合作研发了中英双语千亿级…

剑神诀_单机架设_无需虚拟机_小白专用

前言 今天给大家带来一款单机游戏的架设&#xff1a;剑神诀&#xff0c;一键端 无需虚拟机 如今市面上的资源参差不齐&#xff0c;大部分的都不能运行&#xff0c;本人亲自测试&#xff0c;运行视频如下&#xff1a; 剑神诀 搭建教程 此游戏架设不需要安装虚拟机&#xff0c;…

大会员体系是如何让积分流动起来,实现跨业态引流的?

积分&#xff0c;是大会员体系建设的重点&#xff0c;也是难点之一。 假设积分跨业态或者跨品牌流通&#xff0c;但没有一套统一的积分结算体系&#xff0c;就容易出现各业态或品牌利益分配不均的问题。 因此&#xff0c;大会员体系能有效落地的重点之一&#xff1a;集团必须…

AI绘画Stable Diffusion 双重曝光-神秘意境和难以言喻的视觉体验,SD提示词轻松搞定

大家好&#xff0c;我是画画的小强 今天给大家介绍AIGC绘图提示语使用常见摄影手法&#xff1a;双重曝光。双重曝光摄影效果是一种摄影爱好所热衷的常见摄影手法之一。通过双重曝光摄影手法&#xff0c;能够为图同摄影图像引入神秘的意境感和一种难以言喻的视觉体验&#xff0…

python基础_类

在Python中&#xff0c;类&#xff08;Class&#xff09;是面向对象编程&#xff08;OOP&#xff09;的核心概念之一。类提供了一种创建新对象的模板&#xff0c;这些对象通常被称为类的实例或对象。以下是关于Python类的一些关键点和特性&#xff1a; 定义类 类通过class关键…

Swagger php注解常用语法梳理

Swagger php注解常用语法梳理 快速编写你的 RESTFUL API 接口文档工具&#xff0c;通过注释定义接口和模型&#xff0c;可以和代码文件放置一起&#xff0c;也可以单独文件存放。 Swagger 优势 通过代码注解定义文档&#xff0c;更容易保持代码文档的一致性模型复用&#xff0…

CSS 背景添加白色小圆点样式

css也是开发过程中不可忽视的技巧 此专栏用来纪录不常见优化页面样式的css代码 效果图: 未添加之前: 代码: background: radial-gradient(circle at 1px 1px, #3d3c3c 2px, transparent 0);background-size: 20px 25px;