search - DynamoDB 中的高效子字符串搜索
问题描述
这是我的情况的背景:
- 我在 dynamoDB 中有一个巨大的数据库,包含 250.000 个项目。(示例)表
- 我希望能够通过 3 个属性进行“子字符串搜索”,获取与子字符串匹配的所有项目的列表。
- 我希望能够搜索的属性在不同项目之间可以具有相同的值。
- 我的哈希键是一个 id(真正区分项目的唯一属性)。
- 我正在使用 react native 作为客户端
- 我的架构有这些“查询类型”查询
我在哪里:
我首先尝试使用 listCaballos 查询进行查询,将用户输入作为过滤器添加到查询中,并递归地使用 nextToken 遍历整个表(不使用二级索引),但是遍历表并返回需要 6 分钟项目。
我知道二级索引有助于分区然后通过选择的键对项目进行排序(这使得它更快),但我读到这会迫使用户进行精确搜索(不是子字符串类型的搜索),这不是我需要的.
我听说 Elastic Search 可能会有所帮助。
有什么建议么?
谢谢!
解决方案
这在 DynamoDB 中效率不高。尽管您可以创建二级索引来搜索“begins_with”,但子字符串(“包含”)功能仅适用于在大型数据集中效率不高的过滤器(因为 DynamoDB 将使用 IOPS 查询所有内容然后应用过滤器)。
对于这种需求,使用 AWS ElasticSearch 或 CloudSearch 等其他服务对数据库进行索引是有效的,这样您就可以在该服务之上应用查询并配置连续索引。
入门
推荐阅读
- c - 使用 Scanf,C 语言提出问题
- data-binding - Custom UI5 control does not update bound value
- html - 如何使用 htaccess 隐藏页面的源视图?
- android - 掩盖容器内的形状 Flutter
- python-3.x - 在 Kivy 中半动态更改 GridLayout 网格大小
- javascript - JQuery 无法更新 HTML 中的数据属性
- java - Maven:pom 相当于“cvf”
“ 命令? - html - 输入内的垂直对齐图标
- css - Material UI Grid Items 不占全宽度
- javascript - 在 javascript 中使用正则表达式从内到外获取 pharanteses 之间的全部内容