<p>要查询不是哈希键的字段,需要使用全局辅助索引(GSI)。查看<a href="http://aws.amazon.com/blogs/aws/now-available-global-secondary-indexes-for-amazon-dynamodb/" rel="noreferrer">this AWS Post</a>了解有关GSI的更多详细信息</p>
<p><strong>更新2015年2月:</strong>现在可以将GSI添加到现有表中。有关详细信息,请参见<a href="http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.OnlineOps.html#GSI.OnlineOps.Creating" rel="noreferrer">Amazon Docs</a>。</p>
<p><s>
很遗憾,<a href="https://stackoverflow.com/questions/22669534/can-you-add-a-global-secondary-index-to-dynamodb-after-table-has-been-created">you cannot add a GSI to an existing DynamoDB table</a>因此,如果确实需要查询数据,则需要创建一个新表并导入数据。</s></p>
<p>从<a href="http://aws.amazon.com/dynamodb/faqs/" rel="noreferrer">DynamoDB FAQ</a>:</p>
<blockquote>
<p><strong>Q: How do I create a global secondary index for a DynamoDB table?</strong></p>
<p>All GSIs associated with a table must be specified at table creation
time. At this time, it is not possible to add a GSI after the table
has been created. For detailed steps on creating a Table and its
indexes, see <a href="http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStartedCreateTables.html" rel="noreferrer">here</a>. You can create a maximum of <a href="http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html" rel="noreferrer">5 global secondary
indexes</a> per table.
</p>
</blockquote>
<p><s>如果不想移植数据,可以考虑创建第二个DynamoDB表,将电子邮件作为散列键,将父记录的散列用作对主数据表的查找,但正如您所想象的,这并不是一个最佳的解决方案,而且还带来了与主数据表保持同步的麻烦桌子。</s></p>