ES常用操作命令

目录

一、索引操作

1、添加索引

2、查看索引结构

 3、查看索引是否存在

4、删除索引

5、修改索引

5.1 创建新的索引映射

5.2 使用Reindex API进行数据迁移:

5.3 删除旧索引user

5.4 修改新索引 user_new 名字为 user


 

es版本为6.7.2,kibana版本6.7.2

一、索引操作

1、添加索引

#带结构添加索引
PUT user
{
  "mappings": {
    "doc": {
      "properties": {
        "name":{
          "type": "text",
          "analyzer": "ik_max_word"
        },
        "age":{
          "type": "long"
        },
        "address":{
          "type": "keyword"
        }
      }
     }
  }   
}

#在es7后就不存在type类型了,直接创建索引即可
#不带结构添加索引
PUT user

 成功结果:

2、查看索引结构

GET user/_mapping

成功结果:

 3、查看索引是否存在

HEAD user

存在时:

不存在时:

4、删除索引

DELETE user

成功结果:

5、修改索引

        mappings一旦创建,其字段类型就不能再被修改。对于需要修改字段的场景,一般都是建新的mapping,把原有的数据拷贝过来,字段虽然不能再修改,但可以新增新的字段。

5.1 创建新的索引映射
PUT user_new
{
  "mappings": {
    "doc": {
      "properties": {
        "name":{
          "type": "text",
          "analyzer": "ik_max_word"
        },
        "age":{
          "type": "long"
        },
        "address":{
          "type": "text"
        },
        "phone":{
          "type": "keyword"
        }
      }
     }
  }   
}
5.2 使用Reindex API进行数据迁移
POST _reindex  
{  
  "source": {  
    "index": "user"  
  },  
  "dest": {  
    "index": "user_new"  
  }  
}

成功结果:

5.3 删除旧索引user
DELETE user
5.4 修改新索引 user_new 名字为 user
POST _aliases
{
    "actions": [
    {
      "add": {
        "index": "user_new",
        "alias": "user"
      }
    }
  ]
}

成功结果:

 注意:如果新索引的字段名 和 旧索引的字段名 不相同,该怎么迁移数据

        场景:user_new这个新索引的地址字段是addr ,而老索引里是address,执行数据迁移时需要特殊指定reindex的迁移字段转换逻辑。

# 步骤1: 创建新索引
PUT /新索引名(user_new)
{
  "mappings": {
    "properties": {
      "new_field": {
        "type": "text"
      }
      // 其他新字段映射...
    }
  }
}
 
# 步骤2: 使用_reindex API复制数据
POST /_reindex
{
  "source": {
    "index": "旧索引名(user)"
  },
  "dest": {
    "index": "新索引名(user_new)"
  },
  "script": {
    "source": "ctx._source.新字段名(addr)= ctx._source.remove('旧字段名(address)')",
    "lang": "painless"
  }
}
 
# 步骤3: 确认数据迁移成功
GET /新索引名(user_new)/_search
 
# 步骤4: 如果一切正常,可以删除旧索引
DELETE /旧索引名(user)

<think>好的,用户现在想了解Elasticsearch常用curl命令示例。之前我已经提供过一些基础命令,但根据用户提供的引用,需要整合新的信息。首先,我需要检查用户给出的引用内容,看看有哪些新的命令需要补充到回答中。 用户提供的引用[1]提到了动态修改setting中的分词器,这是一个高级操作,可能在索引配置调整时用到。引用[2]展示了如何获取索引的mapping信息,这也属于索引管理的一部分,我之前可能已经提到过查看索引,但具体获取mapping的命令需要补充。引用[3]是关于集群健康状态的查询,不过用户之前的问题已经涵盖了集群健康检查,可能需要确认是否有新的参数或认证方式需要加入,比如使用--user或HTTPS。引用[4]是关于分片重新分配的,这在处理分片问题时很重要,之前可能没有提到这个命令,需要添加到集群管理部分。 接下来,我需要回顾之前的回答,确保不重复并且补充新内容。例如,之前的回答中已经涵盖了创建索引、查看索引、删除索引,以及文档的增删改查,还有集群健康状态和节点信息。现在需要将用户提供的引用中的新命令整合进去,比如修改分词器、获取mapping、带认证的集群健康检查,以及分片重新分配。 同时,需要注意用户可能的环境差异,比如是否需要认证(如引用[2]中的-u参数和引用[3]中的--user),或者使用HTTPS连接(如引用[3]中的URL)。这些细节需要明确在命令中体现,帮助用户根据实际情况调整。 另外,用户引用的命令中有一些高级操作,比如动态修改setting和分片重新分配,这些可能需要权限或特定条件,应该在说明中注明注意事项,避免用户误操作。 最后,组织这些命令时,需要按照功能分类,比如索引管理、文档操作、集群管理等,让结构清晰,方便用户查找。同时,生成的相关问题需要覆盖用户可能感兴趣的进阶主题,比如性能优化、批量操作、分片策略等,引导用户深入探索。</think>### Elasticsearch 常用 curl 命令示例 #### 一、核心操作命令 1. **索引配置与信息查询** - **动态修改分词器配置** ```shell curl -XPUT 'http://ip:port/indexName/_settings' \ -H 'Content-Type: application/json' \ -d '{ "analysis": { "analyzer": { "full_pinyin_analyzer": { "filter": ["lc_full_pinyin"], "tokenizer": "keyword", "type": "custom" } } } }' ``` > 注:需管理员权限,修改后仅对新文档生效[^1]。 - **获取索引的 mapping 结构** ```shell curl -XGET -u elastic:密码 'http://ip:port/索引名/_mapping?pretty=true' # 显示字段类型和分词规则[^2] ``` 2. **集群与分片管理** - **查看带认证的集群健康状态** ```shell curl --user 用户名:密码 -XGET 'https://域名:端口/_cluster/health?pretty' # 输出包含 green/yellow/red 状态[^3] ``` - **手动分配分片(修复未分配分片)** ```shell curl -XPOST 'localhost:9200/_cluster/reroute' -d '{ "commands": [{ "allocate": { "index": "index-name", "shard": 0, "node": "node-0", "allow_primary": false } }] }' ``` > 注:适用于紧急修复分片分配异常,需谨慎操作[^4]。 --- #### 二、高频实用命令(补充) 1. **批量操作** - 使用 `_bulk` 接口批量插入数据: ```shell curl -XPOST 'http://localhost:9200/_bulk?pretty' -H 'Content-Type: application/json' -d' { "index" : { "_index" : "test", "_id" : "1" } } { "field1" : "value1" } { "index" : { "_index" : "test", "_id" : "2" } } { "field1" : "value2" }' ``` 2. **查询优化** - 强制合并分段(减少内存占用): ```shell curl -XPOST 'http://localhost:9200/索引名/_forcemerge?max_num_segments=1' ``` 3. **安全认证** - 带用户名密码的基础查询: ```shell curl -u elastic:密码 -XGET 'http://localhost:9200/_cat/indices?v' ``` --- #### 三、典型场景命令 1. **测试分词效果** ```shell curl -XPOST 'http://localhost:9200/_analyze?pretty' -H 'Content-Type: application/json' -d' { "analyzer": "standard", "text": "Elasticsearch 分词测试" }' ``` 2. **查看节点线程池状态** ```shell curl -XGET 'http://localhost:9200/_cat/thread_pool?v' ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子笙—望舒

整理编写不易,希望能支持支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值