前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >es创建索引及别名更新mapping方法 elasticsearch [nested] nested object under path [XXX] is not of nested type

es创建索引及别名更新mapping方法 elasticsearch [nested] nested object under path [XXX] is not of nested type

作者头像
oktokeep
发布2024-10-09 08:08:18
发布2024-10-09 08:08:18
1450
举报
文章被收录于专栏:第三方工具

[nested] nested object under path [XXX] is not of nested type这是因为在创建索引时没有指定类型为数组,这就是一个大坑,ES官方说可以不用指定数字组类型,结果不指定的聚合结果还不一样!!!

由于Elasticsearch底层使用了lucene的原因,不支持对mapping的修改,可使用索引重建的方式,升级版本的思路来做别名映射处理。 1.创建索引 创建一个索引,这个索引的名称最好带上版本号,比如my_index_v1,my_index_v2等。 my_index_v1 PUT { "settings": { "index.mapping.total_fields.limit": 2000, "number_of_shards": 5, "number_of_replicas": 1 } "mappings": { "_doc": { ... } }

2.索引复制,使用reindex api将旧索引数据导入新索引 _reindex POST { "source": { "index": "my_index", "type": "_doc" },

"dest": { "index": "my_index_v1", "type": "_doc"

} }

3.在视图确认已经创建且复制成功,然后删除原来的索引 my_index  DELETE

4.创建同之前的索引的相同名称的别名,不删除索引而创建同名的别名会报错“an index exists with the same name as the alias” /_aliases PUT { "actions": [ { "add": { "alias": "my_index", "index": "my_index_v1" }} ] } 如果需要删除别名 /_aliases PUT { "actions": [ { "remove": { "alias": "my_index", "index": "my_index_v1" }} ] } 无缝切换 { "actions": [ { "remove": { "alias": "my_index", "index": "my_index_v1" }}, { "add": { "alias": "my_index", "index": "my_index_v2" }} ] }

5.查看别名 _alias GET

查看别名 http://IP地址:9201/_cat/aliases

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档