温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

elasticsearch索引如何创建

发布时间:2026-08-28 01:57:16 来源:亿速云 阅读:97 作者:小樊 栏目:软件技术

在 Elasticsearch 中创建索引(Index)有多种方式,最常用的是通过 REST API。下面按常见场景给你一个完整说明。


一、最简单方式:自动创建索引(不推荐生产环境)

当你向一个不存在的索引写入数据时,Elasticsearch 会自动创建索引。

PUT /test_index/_doc/1
{
  "name": "张三",
  "age": 25
}

⚠️ 自动创建的索引会使用默认配置(分片、映射等),不利于生产环境控制。


二、手动创建索引(推荐 ✅)

1️⃣ 创建基础索引(无自定义配置)

PUT /my_index

默认:

  • 主分片:1
  • 副本分片:1
  • 动态 mapping

2️⃣ 创建索引并指定分片与副本

PUT /my_index
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 2
  }
}

说明:

  • number_of_shards:主分片数(创建后不可修改)
  • number_of_replicas:副本数(可随时修改)

3️⃣ 创建索引并定义 Mapping(非常重要 ✅)

PUT /my_index
{
  "settings": {
    "number_of_shards": 1
  },
  "mappings": {
    "properties": {
      "id": {
        "type": "integer"
      },
      "name": {
        "type": "text",
        "analyzer": "ik_max_word"
      },
      "age": {
        "type": "integer"
      },
      "created_at": {
        "type": "date"
      }
    }
  }
}

三、使用中文分词器(如 IK)

需要先安装 ik 分词器插件,然后:

PUT /news
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "ik_max_word",
        "search_analyzer": "ik_smart"
      }
    }
  }
}

四、查看索引信息

GET /my_index

查看所有索引:

GET /_cat/indices?v

五、删除索引

DELETE /my_index

⚠️ 删除索引会清空所有数据,不可恢复。


六、索引创建常见错误

❌ 1. 主分片数不能修改

{
  "error": "can't change number_of_shards"
}

✅ 解决:只能重建索引(Reindex)


❌ 2. Mapping 一旦创建,部分字段不可修改

可新增字段,但不能修改已有字段类型。


七、生产环境建议 ✅

  • ✅ 明确指定 settings 和 mappings
  • ✅ 禁用自动创建索引(可选)
  • ✅ 合理设置分片数(避免过多)
  • ✅ 使用别名(Alias)
PUT /my_index_v1
PUT /my_index/_alias/my_index_alias

如果你愿意,我也可以:

  • ✅ 给你 Java / Python 创建索引示例
  • ✅ 帮你设计 合理的索引结构(日志 / 搜索 / 时序数据)
  • ✅ 讲清楚 索引 vs MySQL 表的关系

你现在用的是 ES 几.x 版本?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手