![无法使搜索查询适用于 Azure blob 元数据字段](https://linux22.com/image/741737/%E6%97%A0%E6%B3%95%E4%BD%BF%E6%90%9C%E7%B4%A2%E6%9F%A5%E8%AF%A2%E9%80%82%E7%94%A8%E4%BA%8E%20Azure%20blob%20%E5%85%83%E6%95%B0%E6%8D%AE%E5%AD%97%E6%AE%B5.png)
我在存储帐户中有一个 blob 容器,其中每个 blob 都是一个图像。我已向每个 blob 添加了“w”和“h”元数据字段,其中包含图像的宽度和高度。
我已按照说明操作这里向 Blob 存储添加搜索服务,但我添加的是元数据而不是 Blob 内容。
我可以确认元数据存在并且有效,如果我在 Azure 门户中浏览 Blob,我可以看到具有有效数据的字段,如果我在搜索资源管理器中执行“search=*”,我会为每个 Blob 返回此信息:
{
"@search.score": 1,
"w": 640,
"h": 424,
"metadata_storage_path": "......"
}
我的问题是我想通过图像宽度(w)和高度(h)进行搜索,但不知道该如何做。
尝试了这些示例查询来搜索 w=640,但没有成功,只是返回所有 blob 或错误:
w=640
search=*&w=640
search=*&w eq 640
w eq 640
我注意到的一件事是,在写入 blob 元数据时(我使用了 Azure 存储 Python 库),您只能写入字符串数据。但是当您指定数据源中的字段时,可以将它们设置为 int32。
如何启用对 Blob 元数据字段的可过滤搜索?
编辑: 根据 SumanthMarigowda-MSFT 的回答,我看了这doc,就我而言,这里有一些示例查询:
仅 640x480:
search=*&$filter=(w eq 640 and h eq 480)
所有 w 都在 640 到 700 之间:
search=*&$filter=(w ge 640 and w lt 700)
答案1
MSDN 论坛上有类似的查询讨论,您可以参考这里提到的建议关联。