在Elasticsearch上迁移(创建或更新)索引和类型Mappgins

时间:2018-03-06 22:46:21

标签: firebase elasticsearch angular5 elasticsearch-curator

我已经开始在Firebase上托管一个新的无服务器Angular 5应用程序。

在这个应用程序中,必须维护许多Elasticsearch的索引和类型。

我一直在寻找一种解决方案,允许我自动化在应用部署期间/之后自动创建/更新索引和/或自动键入映射(类似 Rails / Laravel迁移的功能。)

到目前为止,我发现的最接近的是curator工具。

然而,经过少量测试后,我无法实现自动化:

  • 创建索引和/或类型映射只有在它们不存在时
  • 仅在必要时更新索引和/或类型映射

在尝试handle this issue myself之前,我想知道是否有适当的技巧来解决这个问题?

1 个答案:

答案 0 :(得分:0)

策展人是关于指数管理和现有指数的清理,而不是创造。创建更像是logstash(这将是一个服务器应用程序)的领域。如果你想成为无服务器,我想你可能必须熟悉elasticsearch的REST API。

您必须采取的步骤并不太难。如果或多或少取决于您何时创建的规则。默认情况下,Logstash通过查看时间戳,决定索引名称来使用每日轮换,并且(感谢untergeek)依赖于弹性动态索引创建(如果该索引不存在)。如果你想手动create,我会留下链接,因为它可以很简单:

PUT index-name

您可以在创建时定义更多设置,但根据您的需要,您可以使用templates更简单地工作。这使您可以定义映射在一般级别上的工作方式。您可以为每个索引或通配符的索引组定义模板。您可以明确定义每个映射,也可以依赖dynamic mapping。通过定义模板,创建与名称模式匹配的新索引将接收这些设置并键入映射。

如果预期的映射不是很大,动态映射可能非常好。如果它们很大,请注意在每个新索引处,动态操作是一项高优先级任务,如果您当前正在尝试索引大量数据,则可能会陷入困境。

Logstash有一些不错的样本mapping templates(虽然在6.x中看起来弹性已更改为templateindex_patterns并且他们尚未更新模板)。

您可能需要进行一些完整性检查,以确定何时命名索引,但是他们的文档会指导您完成您需要的大部分REST调用。我知道这不是一个很好的答案,所以我希望有人已经在JS库中做过这个,但希望这有助于万一没有人。