1

这与我在这里的原始问题有关: Elasticsearch Delete Mapping Property

从那篇文章假设您将不得不“重新索引”您的数据。这样做的安全策略是什么?

总结一下原始帖子,我试图从以下位置获取映射:

{
  "propVal1": {
    "type": "double",
    "index": "analyzed"
  },
  "propVal2": {
    "type": "string",
    "analyzer": "keyword"
  },
  "propVal3": {
    "type": "string",
    "analyzer": "keyword"
  }
}

对此:

{
  "propVal1": {
    "type": "double",
    "index": "analyzed"
  },
  "propVal2": {
    "type": "string",
    "analyzer": "keyword"
  }
}

删除已删除属性的所有数据。

我一直在考虑为此使用 REST API。这似乎很危险,因为您将需要与进行 REST 调用的客户端应用程序同步状态,即您需要将所有文档发送给客户端,修改它们,然后将它们发送回来。

如果有一个服务器端操作可以移动和转换类型,那将是理想的。是否存在这样的事情,或者我是否在“重新索引”中遗漏了一些明显的东西?

另一种方法是将数据标记为不再有效。就映射而言,是否有任何内置标志,或者是否有必要创建一个辅助类型来定义另一个类型属性是否有效?

4

1 回答 1

3

你可以看看elasticsearch-reindex 插件。更手动的操作可能是使用扫描和滚动 API 来取回您的原始内容并使用批量 API 将其索引到新的索引或类型中。

最后一个答案,您是如何在 Elasticsearch 中获取文档的?如果您在某处已经有数据源,只需使用与以前相同的过程即可。如果您不想要任何停机时间,请在旧索引之上使用别名,一旦重新索引完成,只需将别名移动到新索引。

于 2013-04-23T06:01:42.393 回答