如何对 Azure table 存储中的行键进行部分搜索?

How to do a partial search on a row key in azure table storage?

我将 Azure table 存储与节点 js 一起用于票务应用程序。我使用客户的名称作为分区键,使用票证 ID 作为行键。 例如:

RowKey: {'_': 232344}

我希望行键是 ticketid 和客户 phone 编号的组合。例如:

RowKey: {'_': 232344_9393944392} or RowKey: {'_': 2323449393944392}

并能够使用客户的 phone 号码对行键进行部分搜索,并检索客户提出的所有工单。 我怎样才能在节点 js 中做到这一点?

以下代码是我查询 table 存储的方式。

const azure = require('azure-storage');
const query = new azure.TableQuery().where('PartitionKey eq ?',client).and('Rowkey eq?',ticketId);

这是我卡住的地方,因为我不知道如何对行键进行部分搜索。

有两种可能的解决方案:

  • 使用 Phone 数字而不是票证 ID 作为 PartitionKey。如果是这样,在工单中搜索 phone 个数字可以转换为简单的分区扫描。这是一种更有效的方法。
  • 继续使用Ticket Id 作为PartitionKey,并使用RowKey 格式PhoneNumber_TicketId。如果是这样,在票据中搜索 phone 号码可以转换为过滤字符串,例如 RowKey ge '9393944392' and RowKey lt '9393944393',这是一个完整的 table 扫描,因为字符串中没有过滤 PartitionKey。这是一种效率较低的方法,因为会进行完整 table 扫描。