Azure blob 存储 - findBlobsByTags 总是失败并出现错误 Error parsing query at or near character position 1: unexpected '1'

Azure blob storage - findBlobsByTags always fails with error Error parsing query at or near character position 1: unexpected '1'

我正在使用 Azure Blob 存储。在持久化 blob 的同时,我也持久化了索引标签。当我通过 Microsoft Azure 存储资源管理器下载 blob 时,我能够看到索引标签。 以编程方式,我正在尝试过滤标签(使用 azure-storage-blob 版本 12.15.0

我正在使用这个 api 从数据库中获取详细信息 - findBlobsByTags

这是我正在尝试的代码

    FindBlobsOptions findByTags = new FindBlobsOptions(searchExpression));
    findByTags.setMaxResultsPerPage(100);
    PagedIterable<TaggedBlobItem> blobsByTags = blobContainerClient.findBlobsByTags(findByTags, Duration.ofSeconds(30), Context.NONE);

我试过以下查询

 1.   String searchExpression = "where=@container = 'container-name' AND \"field\" = \'value\'";
 2. String searchExpression = "where=field=value";
 3. String searchExpression = "where=\"field\" =\'value\'";
     String escapeJava = StringEscapeUtils.escapeJava(searchExpression);
 4. String searchExpression = "&where=\"trackingId\"=\'TA00965650\'";

我遇到了这个异常。

[Request processing failed; nested exception is com.azure.storage.blob.models.BlobStorageException: Status code 400, "

InvalidQueryParameterValueError parsing query at or near character position 1: unexpected '1' RequestId:78043a6d-901e-00de-0797-510acf000000 Time:2022-04-16T13:42:00.7475672Zwherewhere="field"='value'This query parameter value is invalid."] with root cause com.azure.storage.blob.models.BlobStorageException: Status code 400, "

InvalidQueryParameterValueError parsing query at or near character position 1: unexpected '1' RequestId:78043a6d-901e-00de-0797-510acf000000 Time:2022-04-16T13:42:00.7475672Zwherewhere="trackingId"='TA00965650'This query parameter value is invalid." at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.azure.core.http.rest.RestProxy.instantiateUnexpectedException(RestProxy.java:390) at

从异常日志看来,我传递给 findBlobsByTags 方法的查询在解析时存在问题。请让我知道我做错了什么。如果有一些escaping/encoding需要完成

如评论中所述,请从您的搜索表达式中删除 where=。文档似乎不正确。您可能想在这里创建一个问题:https://github.com/Azure/azure-sdk-for-java/issues 以便更正文档。

您可以在此处查看工作代码:https://github.com/Azure/azure-sdk-for-java/blob/azure-storage-blob_12.16.0/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/ContainerAPITest.groovy