Azure Search如何查询MetadataFields中为null或缺失的属性?
Azure Search 筛选JSON嵌套属性为null或缺失的查询方案
该需求完全可以实现,根据你使用的查询场景不同,对应正确语法如下:
1. Search Explorer 简单查询场景
就是你之前使用MetadataFields/tagnumber:abc-123这类语法的查询方式,要筛选tagnumber为null 或者 完全不存在的所有文档,直接在搜索框输入:
-MetadataFields/tagnumber:*
语法说明:*是通配符,匹配该字段的任意有效值,前缀-代表取反,最终会匹配所有没有该属性有效值的文档。
2. OData $filter 筛选器场景
如果你是调用API、或者需要在高级筛选逻辑中使用,分三种场景对应语法:
- 仅筛选
tagnumber值为null的文档:$filter=MetadataFields/tagnumber eq null - 仅筛选
tagnumber属性完全不存在的文档:$filter=not search.ismatch('*', 'MetadataFields/tagnumber') - 同时筛选
tagnumber为null 或 完全不存在的文档:$filter=MetadataFields/tagnumber eq null or not search.ismatch('*', 'MetadataFields/tagnumber')
补充说明
如果以上语法执行失败,可以先确认索引定义中MetadataFields被设置为复杂类型(ComplexType),而非普通字符串类型。你之前已经可以正常查询嵌套属性的指定值,说明字段类型配置是正确的,直接使用上述语法即可。
内容的提问来源于stack exchange,提问作者DeannaD
相关产品推荐
相关产品推荐

