elasticsearch - 映射后是否有更好的方法来更新现有字段索引?
问题描述
我已设置dynamic
为false
禁用动态映射。但是我忘记在映射中添加一个字段。我在索引所有文档后添加了该字段,因此 Elasticsearch 不会索引文档中存在的字段。
原始映射
{
"customers" : {
"mappings" : {
"dynamic" : "false",
"properties" : {
"name" : {
"type" : "keyword"
}
}
}
}
}
但是文件就像
"_source" : {
"name" : "Bob"
"favourite" : "cake"
}
favourite
在为文档编制索引后,该字段被添加到映射中。
我必须更新所有文档以索引现有字段,有没有更好的方法?
解决方案
以前索引的文档不会更改并通知您的新更新,因此如果您希望所有文档在其字段上具有相同的属性,我想唯一的方法是将您当前的索引重新索引到具有所需映射的新索引和使用重新索引 API。
POST _reindex
{
"source": {
"index": "oldindex"
},
"dest": {
"index": "newindex"
}
}
推荐阅读
- security - 关于在本地存储中加密和存储 JWE 令牌以供以后在安全的 http 请求中重用
- compression - 请求基于流的解压
- python - 我如何从 python 替换这些案例
- c - LNK2019 错误:检查此代码的错误
- c - 在 C 中进行字符输入时,for 循环运行的次数更少
- javascript - 为什么我在 SVG 上无法读取 null 的属性“tagName”?
- pytorch - AssertionError:无法从数据中推断损失函数,请传递损失函数
- database - 来自数据库的 ASP.NET Core 枚举本地化
- opencv - 如何在重复结构图像中使用互相关来找到图像的变化?
- javascript - 为什么这个函数只推送数组中的一项?