php - 重新索引在 ElasticSearch 中添加新字段不起作用...(php 客户端)
问题描述
我在 elasticsearch 中有索引,我想添加一些新的映射/字段...
我正在使用 elasticsearch php 客户端。
我的步骤:
1 - 使用新的映射/字段创建 TMP 索引 -确定
2 - 从 OLD 索引重新索引到 TMP 索引 -好的(新索引具有新字段)
3 - 将 TMP 索引重新索引为旧索引 - KO(我丢失了新的映射/字段,我不知道为什么)
4 - 删除 TMP 索引 -确定
5 - 这里我有旧索引(好)和旧映射(坏)
如何在原始索引中拥有新的映射/字段?
谢谢您的帮助
解决方案
在您的第三步中,您不会丢失新映射,您只是没有从开始和重新索引中获得它,不要复制您需要在重新索引之前更新旧索引上的映射的映射。
- 创建带映射的 TMP
- 重新索引 OLD ---> TMP
- 删除 OLD 并使用映射创建 OLD
- 删除 TMP
- 在这里,您将拥有带有新映射的 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
推荐阅读
- reactjs - Ant设计表行合并基于数据而不是索引值
- reactjs - 更改挂钩元素时组件不会更改
- pip - 找不到包“dbus-1”
- html - 引导程序,无法将图像转到 jumbotron 的右侧
- quarkus - Quarkus 支持 @CEntryPoint 吗?
- typescript - TypeScript 泛型:用联合定义类型交集
- java - 根据用户操作提取定位器
- reactjs - 使用 useParams() 钩子获取多个 URL 参数
- javascript - Angular js 到 Angular 8
- r - 在 R 中,有没有办法用另一个数据帧的值重新编码一个数据帧的列?