侧边栏壁纸
博主头像
colo

欲买桂花同载酒

  • 累计撰写 1823 篇文章
  • 累计收到 0 条评论

Elasticsearch索引创建与基本概念

2025-12-12 / 0 评论 / 6 阅读

题目

Elasticsearch索引创建与基本概念

信息

  • 类型:问答
  • 难度:⭐

考点

索引概念理解,HTTP API使用,索引创建方法

快速回答

Elasticsearch索引相当于关系型数据库中的表,用于存储结构化数据。创建索引的要点:

  • 使用PUT HTTP方法发送请求
  • 索引名称需全小写且不含特殊字符
  • 可在请求体中定义分片、副本等配置
  • 基础命令示例:
    PUT /my_index
## 解析

1. 原理说明

Elasticsearch索引(Index)是文档(Document)的逻辑容器,类比关系型数据库:

  • 索引 ≈ 数据库表(存储同类型数据)
  • 文档 ≈ 表记录(JSON格式数据)
  • 分片(Shard):索引的横向分割单元,支持分布式存储
  • 副本(Replica):分片的拷贝,提供高可用性

2. 代码示例

使用curl创建带配置的索引:

# 创建名为products的索引,定义主分片和副本
curl -X PUT "localhost:9200/products?pretty" -H 'Content-Type: application/json' -d'
{
  "settings": {
    "number_of_shards": 3,   # 主分片数
    "number_of_replicas": 1  # 每个分片的副本数
  }
}'

成功响应:

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "products"
}

3. 最佳实践

  • 命名规范:全小写字母,避免_-以外的特殊字符
  • 分片规划:单个分片大小建议10-50GB(过大影响性能)
  • 动态映射:首次插入文档时自动创建索引(生产环境建议预定义映射)
  • 配置模板:使用Index Template统一管理索引配置

4. 常见错误

  • 无效名称PUT /My_Index(大写字母导致400错误)
  • 重复创建:重复执行创建命令会返回resource_already_exists_exception
  • 配置错误:分片数设置后不可修改(需重建索引)
  • 端口错误:默认使用9200端口而非9300(9300用于集群通信)

5. 扩展知识

  • 索引状态:通过GET /_cat/indices?v查看所有索引
  • 自动创建:当向不存在的索引写入文档时,ES会自动创建索引(使用默认配置)
  • 索引别名:可为索引创建别名(Alias),实现无缝重建索引
  • 版本兼容:ES 7.x+默认移除type概念(传统_type已弃用)