前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ElasticSearch(7.2.2)-es之如何重建索引

ElasticSearch(7.2.2)-es之如何重建索引

作者头像
cwl_java
发布2019-11-03 12:40:15
4K0
发布2019-11-03 12:40:15
举报
文章被收录于专栏:cwl_Java

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。undefined本文链接:https://blog.csdn.net/weixin_42528266/article/details/102814600

简介:⼿把⼿教你es之如何重建索引

背景

Elasticsearch是⼀个实时的分布式搜索引擎,为⽤户提供搜索服务,当我们决定存储某种数据时,在创建索引的时候需要将数据结构完整确定下来,于此同时索引的设定和很多固定配置将不能改变。当需要改变数据结构时,就需要重新建⽴索引,为此,Elastic团队提供了很多辅助⼯具帮助开发⼈员进⾏重建索引。

步骤

  • nba取⼀个别名nba_latest, nba_latest作为对外使⽤
  • 新增⼀个索引nba_20220101,结构复制于nba索引,根据业务要求修改字段
  • 将nba数据同步到nba_20220101
  • 给nba_20220101添加别名nba_latest,删除nba别名nba_latest
  • 删除nba索引

我们对外提供访问nba索引时使⽤的是nba_latest别名

新增⼀个索引(比如修改字段类型,jerseyNo改成keyword类型)

代码语言:javascript
复制
PUT /nba_20220101
{
	"mappings": {
		"properties": {
			"age": {
				"type": "integer"
			},
			"birthDay": {
				"type": "date"
			},
			"birthDayStr": {
				"type": "keyword"
			},
			"code": {
				"type": "text"
			},
			"country": {
				"type": "keyword"
			},
			"countryEn": {
				"type": "keyword"
			},
			"displayAffiliation": {
				"type": "text"
			},
			"displayName": {
				"type": "text"
			},
			"displayNameEn": {
				"type": "text"
			},
			"draft": {
				"type": "long"
			},
			"heightValue": {
				"type": "float"
			},
			"jerseyNo": {
				"type": "keyword"
			},
			"playYear": {
				"type": "long"
			},
			"playerId": {
				"type": "keyword"
			},
			"position": {
				"type": "text"
			},
			"schoolType": {
				"type": "text"
			},
			"teamCity": {
				"type": "text"
			},
			"teamCityEn": {
				"type": "text"
			},
			"teamConference": {
				"type": "keyword"
			},
			"teamConferenceEn": {
				"type": "keyword"
			},
			"teamName": {
				"type": "keyword"
			},
			"teamNameEn": {
				"type": "keyword"
			},
			"weight": {
				"type": "text"
			}
		}
	}
}

将旧索引数据copy到新索引

  • 同步等待,接⼝将会在 reindex 结束后返回
代码语言:javascript
复制
POST /_reindex
{
	"source": {
		"index": "nba"
	},
	"dest": {
		"index": "nba_20220101"
	}
}
  • 异步执⾏,如果 reindex 时间过⻓,建议加上 wait_for_completion=false 的参数条件,这样 reindex 将直接返回 taskId
代码语言:javascript
复制
POST /_reindex?wait_for_completion=false
{
	"source": {
		"index": "nba"
	},
	"dest": {
		"index": "nba_20220101"
	}
}

替换别名

代码语言:javascript
复制
POST /_aliases
{
	"actions": [{
			"add": {
				"index": "nba_20220101",
				"alias": "nba_latest"
			}
		},
		{
			"remove": {
				"index": "nba",
				"alias": "nba_latest"
			}
		}
	]
}

删除旧索引

代码语言:javascript
复制
DELETE /nba

通过别名访问新索引

代码语言:javascript
复制
POST /nba_latest/_search
{
	"query": {
		"match": {
			"displayNameEn": "james"
		}
	}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/10/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 步骤
    • 我们对外提供访问nba索引时使⽤的是nba_latest别名
    • 新增⼀个索引(比如修改字段类型,jerseyNo改成keyword类型)
    • 将旧索引数据copy到新索引
    • 替换别名
    • 删除旧索引
    • 通过别名访问新索引
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档