如何在天蓝色表存储中的行键上进行部分搜索?

时间:2018-09-03 06:29:12

标签: node.js azure-storage azure-table-storage

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

RowKey: {'_': 232344}

我希望行键是ticketid和客户电话号码的组合。例如:

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

并能够使用客户的电话号码对行键进行部分搜索,并检索客户提出的所有票证。 如何在Node JS中做到这一点?

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

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

这是我无法解决的问题,因为我不希望对行键进行部分搜索。

1 个答案:

答案 0 :(得分:0)

有两种可能的解决方案:

  • 使用电话号码而不是工单ID作为PartitionKey。如果是这样,则可以将在票证中搜索电话号码转换为简单的分区扫描。这是一种更有效的方法。
  • 继续使用票证ID作为PartitionKey,并使用RowKey格式PhoneNumber_TicketId。如果是这样,则可以将票证中的电话​​号码搜索转换为诸如RowKey ge '9393944392' and RowKey lt '9393944393'之类的过滤器字符串,这是全表扫描,因为该字符串中未过滤PartitionKey。这是一种效率较低的方法,因为会进行全表扫描。