1

我在一个容器中有成千上万个 Blob,比如

  • A/Temp/A001-1.log
  • A/Temp/A001-2.log
  • A/Temp/A001-3.log
  • B/Tmp/B001-1.log
  • B/Tmp/B001-2.log
  • B/Tmp/B002-1.log

现在我的问题是我想找到名称中包含 A001 的 Blob。我知道 ListBlobsWithPrefix 会从一些文本开始查找 Blob,这对我来说不是这种情况。ListBlobs 会将所有 blob 带到我的代码中,然后我必须搜索那个。有什么方法可以让我得到我正在寻找的斑点。

4

3 回答 3

2

除了蛮力之外,真的没有简单的方法可以在容器中搜索特定的 blob(或具有名称模式的 blob 集)。正如您所猜测的那样,名称前缀在这种情况下也无济于事。

我通常建议人们做的是将他们的可搜索元数据保存在其他地方(也许是 SQL DB,也许是 MongoDB,只要它提供他们需要的搜索能力就无关紧要),该数据存储包含指向确切的参考链接斑点。Blob 名称本身也可以作为可搜索属性之一存储在元数据中。

另外:一旦您进入“容器中的数千个 blob”,您会发现提取 blob 名称需要一段时间(我想您再次看到了这一点)。容器当然可以容纳任意数量的 blob,但在这种情况下,您确实希望根据其他一些元数据直接访问它们,而不是通过名称列表进行枚举。

于 2013-07-14T01:00:13.407 回答
0

如果前缀已知,则构造 blob 名称,而不是搜索,然后尝试下载 blob。如果未找到 blob,您将收到 404 not found 异常。

于 2013-07-15T06:42:54.143 回答
0

截至今天,在少数地区提供了一个预览功能,以允许 Blob 存储索引:

https://docs.microsoft.com/en-us/azure/storage/blobs/storage-manage-find-blobs?tabs=azure-portal

希望他们尽快提供,

问候

于 2020-08-21T09:25:09.093 回答