使用Blob名称过滤Azure Blob搜索

时间:2019-08-29 06:07:16

标签: azure azure-storage-blobs azure-cognitive-search

我有一个存储帐户,其中包含用于生成虚拟层次结构的blob:

Data/2016/image01.jpg
   w=640
   h=480
Data/2017/image02.jpg
   w=320
   h=240
...

所有blob都包含包含图像宽度(w)和高度(h)的元数据字段

我已经实现了搜索服务,并将Blob元数据添加为可搜索字段。

这对搜索所有斑点并按w或h进行过滤非常有用:

search=*&$filter=(w eq 640)

我也对Blob名称感到困惑。在容器之后的AFAIK中,所有Blob均以平面形式存储,并且虚拟层次结构(如在浏览Blob时在Azure门户中看到的)仅是通过在Blob名称中添加'/'得出的。但是,当您获取metadata_storage_name时,它只会返回名称的最后一段而不是完整路径。

如何进一步按Blob名称过滤?例如,仅返回名称中包含“ 2017”且w == 640

的Blob

编辑:我部分解决了我的问题。原来我是在搜索中添加$queryType=full而不是queryType=full。因此,类似的方法将起作用:queryType = full&search = image02 *&$ filter =(w eq 640),但仍然无法在搜索中包含斑点“ path”。

1 个答案:

答案 0 :(得分:0)

还有 metadata_storage_path 字段,其中包含完整路径。不幸的是,它还包含整个Blob存储URL。

metadata_storage_path (Edm.String)-Blob的完整URI,包括存储帐户。例如,https://myaccount.blob.core.windows.net/my-container/my-folder/subfolder/resume.pdf