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, "
InvalidQueryParameterValue
Error 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, "
InvalidQueryParameterValue
Error 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 以便更正文档。
我正在使用 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, "
InvalidQueryParameterValue
Error 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, "
InvalidQueryParameterValue
Error 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 以便更正文档。