Elastic 搜索与 Dynamodb 的过滤

hat*_*lla 1 amazon-web-services elasticsearch amazon-dynamodb

我正在构建一个包含数百万行数据的服务。我们想对其进行良好的搜索。例如。我们可以通过一些字段值进行搜索。该行的结构如下:

{
   "field1" : "value1",
   "field2" : "value2",
   "field3" : {
       "field4": "value4",
       "field5": "value5"
   }
}
Run Code Online (Sandbox Code Playgroud)

此外,field3 的结构有时会随着 field4 的存在而变化,有时不存在。

我们希望对以下字段 field1、field2 和 field 4 进行过滤。我们可以在 dynamodb 中创建索引来做到这一点。但我不确定我们是否可以在 dynamodb 中轻松地在 field4 上创建索引而不压平 json。

现在,我的问题是,我们是否应该使用弹性搜索数据存储,据我所知,它会在文档中的每个字段上创建索引,然后可以在每个字段上进行搜索?是对的吗?或者我们应该使用 dynamodb 或完全其他的数据存储?

请提供一些建议。

E.J*_*nan 5

如果搜索是您的应用程序的关键要求,那么请使用搜索产品 - 而不是数据库。Dynamodb 对于很多事情都很有用,但即席搜索不是其中之一 - 如果您使用 dynamodb,您最终将运行大量非常昂贵(缓慢)的扫描;这就是 ES 的诞生目的。