作为我们AWS基础架构的一部分,我正在使用Elasticsearch(7.4)索引。我们使用Terraform在AWS Elasticsearch中创建域,但没有显式创建索引。而是在发布第一个文档时自动创建索引。效果很好,但是现在我被要求拥有一个非分析字段(用户ID)。
放置第一个文档时是否有方法创建字段not_analyzed
?
如果没有 ,我将字段设置为not_analyzed
有哪些选择?我应该进行某种初始化/引导吗?也许有一种方法可以从Terraform做到。该应用程序是使用Chalice构建的,并在Lambda中运行。不知道在这种情况下如何在Lambda中进行初始化。理想情况下,我会一次触发此呼叫:
PUT /my_index
{
"mappings" : {
"properties" : {
"user_id" : {
"type" : "string",
"index" : "not_analyzed"
}
}
}
}
重新启动应用程序时,此调用将再次发送,但我想它是不可变的(PUT)。
答案 0 :(得分:1)
这可能是一个矫kill过正,但我会考虑使用index template feature
这看起来像
Epoch 1/1
250000/250000 [==============================] - 380s 2ms/step - loss: 7.1443
<keras.callbacks.callbacks.History at 0x7fa3ff150048>
它可以使用专用的provider进行地形化-还可以使用IAM密钥直接与AWS Elasticsearch集成。
然后以这种方式创建的第一个文档还将使用给定的模板(当然,如果名称与模式匹配)来建立索引
答案 1 :(得分:0)
这不会直接回答您的问题,但是对于您的问题,我建议在Elasticsearch之外寻求解决方案:
换句话说,执行问题中提到的引导程序,但是将其移至单独的lambda函数,而不是将其混入应用程序lambda中。