【发布时间】:2020-04-13 07:05:44
【问题描述】:
我正在构建一个包含数百万行数据的服务。我们想对它进行很好的搜索。例如。我们可以通过一些字段值进行搜索。该行的结构如下:
{
"field1" : "value1",
"field2" : "value2",
"field3" : {
"field4": "value4",
"field5": "value5"
}
}
此外,field3 的结构有时会随着 field4 的出现而改变,有时则不会。
我们希望对以下字段 field1、field2 和 field 4 进行过滤。我们可以在 dynamodb 中创建索引来实现这一点。但我不确定我们是否可以轻松地在 dynamodb 中的 field4 上创建索引,而不会使 json 变平。
现在,我的问题是,我们是否应该使用弹性搜索数据存储,据我所知,它将在文档中的每个字段上创建索引,然后可以搜索每个字段?那正确吗?或者我们应该使用 dynamodb 还是完全使用任何其他数据存储?
请提供一些建议。
【问题讨论】:
-
您不能在 field4 上建立索引:“索引键属性可以由基表中的任何顶级字符串、数字或二进制属性组成。”当然,如果需要,您可以在顶层复制 field4 并维护它。
标签: amazon-web-services elasticsearch amazon-dynamodb