根据Java文档
但是,索引搜索最多只能找到 10,000 个匹配文档。App Engine 数据存储区可能更适合需要检索非常大的结果集的应用程序。
虽然我不认为这是一个常见的用例。
更现实的是,使用 Datastore 按键获取实体会便宜很多(大概也更快)。使用搜索 API,您可以使用 Index.get() 按 ID 查找文档,或者通过将 ID 存储在字段中并在该字段上搜索来复制 ID。
以下是费用明细:
- Index.get(): $0.10 / 10,000 or 0.00001 per get
- Index.search(): $0.13 / 10,000 or 0.000013 per get
- Datastore get(): $0.06 / 100,000 or 0.0000006 per get
如您所见,Datastore get 比 Search API 选项便宜得多(比 Index.get() 便宜 16 倍)。
如果您的数据结构使用大量直接获取和少量复杂搜索,那么数据存储区在成本方面将是明显的赢家。
注意:我没有包括使用 Index.search() 方法存储重复数据的额外成本,因为这取决于您存储的实体数量。