首页 > 解决方案 > 重新索引在 ElasticSearch 中添加新字段不起作用...(php 客户端)

问题描述

我在 elasticsearch 中有索引,我想添加一些新的映射/字段...

我正在使用 elasticsearch php 客户端。

我的步骤:

1 - 使用新的映射/字段创建 TMP 索引 -确定

2 - 从 OLD 索引重新索引到 TMP 索引 -好的(新索引具有新字段)

3 - 将 TMP 索引重新索引为旧索引 - KO(我丢失了新的映射/字段,我不知道为什么)

4 - 删除 TMP 索引 -确定

5 - 这里我有旧索引(好)和旧映射(坏)

如何在原始索引中拥有新的映射/字段?

谢谢您的帮助

标签: phpelasticsearch

解决方案


在您的第三步中,您不会丢失新映射,您只是没有从开始和重新索引中获得它,不要复制您需要在重新索引之前更新旧索引上的映射的映射。

  1. 创建带映射的 TMP
  2. 重新索引 OLD ---> TMP
  3. 删除 OLD 并使用映射创建 OLD
  4. 删除 TMP
  5. 在这里,您将拥有带有新映射的 OLD 索引

都好!!!

如果您查看有关重新索引的文档 https://www.elastic.co/guide/en/elasticsearch/reference/7.2/docs-reindex.html

有重要警告:

Reindex 不会尝试设置目标索引。它不会复制源索引的设置。您应该在运行 _reindex 操作之前设置目标索引,包括 设置映射、分片计数、副本等。

其他解决方案是使用别名。 https://www.elastic.co/guide/en/elasticsearch/reference/7.2/indices-aliases.html


推荐阅读