首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在弹性搜索中重命名字段名,以节省时间?

如何在弹性搜索中重命名字段名,以节省时间?
EN

Stack Overflow用户
提问于 2022-03-09 05:43:17
回答 2查看 113关注 0票数 3

我一直在使用以下查询重命名fieldName。

代码语言:javascript
运行
复制
POST http://localhost:9200/INDEX_NAME/_update_by_query
{
    "query": { 
        "exists": {
            "field": "NEW_FIELD_NAME"
        }
    },
    "script" : {
        "inline": "ctx._source.NEW_FIELD_NAME = ctx._source.OLD_FIELD_NAME; ctx._source.remove(\"OLD_FIELD_NAME\");"
    }
}

但是超过420万的数据。大概要2-3分钟。

有没有办法缩短持续时间?

ElasticSearch版本是5.6.4

EN

回答 2

Stack Overflow用户

发布于 2022-03-09 09:31:36

大卫对讨论的回答是很难的。如果您正在寻找一种简单的方法,并且您的索引有超过一个主碎片,那么您可以使用切片来并行化工作:

代码语言:javascript
运行
复制
POST http://localhost:9200/INDEX_NAME/_update_by_query?slices=auto&wait_for_completion=false
{
    ...
}

但大卫是对的,你应该在某个时候升级;-)

票数 0
EN

Stack Overflow用户

发布于 2022-03-09 10:38:20

一种完全不同的方法可以确保零停机时间,那就是首先使用更新的字段名创建一个新的索引映射。

之后,可以使用reindex API将数据填充到这个新索引中。https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html

假设您使用的是别名,则一旦完成重新索引,就可以更新此别名的基础索引。这将确保应用程序中没有使用这些数据的停机时间。Reindex API还支持各种conf参数,以使索引过程更快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71404816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档