常用Elasticsearch命令
es别名链接和删除
POST /_aliases
{
"actions": [
{
"add": {
"index": "index",
"alias": "alias"
}
},
{
"remove": {
"index": "index",
"alias": "alias"
}
}
]
}
其中,一个POST请求中的actions按顺序执行,这使得可以无缝切换或者更新索引的别名,或者批量操作。索引可以使用GET /_cat/aliases?v
查看。
索引迁移
索引直接迁移
POST _reindex?wait_for_completion=false
{
"source": {
"size": 5000,
"remote": {
"host": "http://es.com:80",
"username": "elastic",
"password": "123456"
},
"index": "原索引名"
},
"dest": {
"index": "目标索引名"
}
}
其中:
POST _reindex?wait_for_completion=false
用于重新索引文档。wait_for_completion=false
是一个查询参数,表示这个操作是异步的,API调用会立即返回一个任务ID,你可以通过这个任务ID来查询操作的进度。查询方法为GET /_tasks/{task_id}
。- "source"代表源索引的信息;"size"指定了每次批量获取的文档数量,这里为5000;"remote"包含了远程Elasticsearch集群的连接信息;"host"指定远程Elasticsearch集群的地址和端口;"username"和"password"提供用于连接远程Elasticsearch集群的用户名和密码;"index"指定原索引;"dest"指定目标索引。
在使用这个API时,确保你的Elasticsearch集群安全设置允许这种操作,并且你有权限访问源索引和目标索引。此外,如果目标索引已经存在,Elasticsearch默认会失败,除非你使用op_type=index参数来覆盖已有文档。
只复制索引参数
首先你需要使用GET /{index}/_mapping
和GET /{index}/_settings
获取索引的映射信息和设置信息,其中记得在settings中剔除index.creation_date、index.uuid、index.version.created、index.version.upgraded、index.provided_name几个字段,这属于索引自动创建的,不能在创建新索引时使用,其样式可能为:
settings:
{
"test_index" : {
"settings" : {
"index" : {
"number_of_shards" : "5",
"number_of_replicas" : "1",
"version" : { }
}
}
}
}
mappings
{
"test_index": {
"mappings": {
"test_index": {
"properties": {
"id": {
"type": "long"
},
"content": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
其中最外层的test_index
是你原索引的名字,需要去除,将settings
和mappings
放在最外层,再加一个PUT {index}
命令就可以复制索引结参数了,即
PUT {index}
{
"settings": {
"index": {
"number_of_shards": "5",
"number_of_replicas": "1",
"version": {
}
}
},
"mappings": {
"{index}": {
"properties": {
"id": {
"type": "long"
},
"content": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}