如何在Azure搜索索引中过滤JSON数组数据?
解决Azure Search过滤数组类型数据的问题
你遇到的错误是因为data/prices是数组类型(多值字段),而ne null这类二元运算符要求操作数为单值,所以无法直接用这种方式判断数组是否为空。
要过滤数组类型数据,Azure Search提供了any()和all()两个集合运算符,针对你的场景:
过滤prices数组不为空的文档
使用any()函数,只要数组中存在至少一个元素就会匹配,对应的过滤条件为:
{ "select": "id, data/prices", "filter": "data/prices/any()" }
进阶:过滤数组中满足特定条件的文档
如果需要筛选prices数组里有符合特定条件的元素(比如价格大于50),可以给any()传入参数指定判断逻辑:
{ "select": "id, data/prices", "filter": "data/prices/any(p: p/price gt 50)" }
同理,all()会要求数组中所有元素都满足指定条件才匹配,适合需要严格校验全部元素的场景。
内容的提问来源于stack exchange,提问作者Lazx
相关产品推荐
相关产品推荐

