我正在尝试执行相当长的 OData 过滤器来检索满足多个条件的实体集合。
作为一个简单的解决方案,我目前正在做这样的事情:
$filter=(name eq 'A' or name eq 'B' or name eq 'C') and (address eq 'addr1' or address eq 'addr2')
在示例中,我的目标是 2 个字段:“名称”和“地址”。对于这两个字段,我正在按符合条件的值列表(可能很长)进行过滤。
虽然所提供的查询已经有效,但实际上存在一个限制,即整个 API 调用长度的字符限制(大约 8000 个字符)。如果用例扩展,查询长度很可能会超出字符限制。
我尝试过类似的方法来稍微截断查询:
$filter=(name eq 'A' or 'B' or 'C') ...
它不起作用(语法错误),但我想知道是否有更好的方法来构造查询以便长度可以更短?
您正在寻找
in
操作员
$filter=name in ('A', 'B', 'C')
对于那些找到此页面寻找 Azure 认知搜索的 OData 查询的人,您可以将其打开:
$filter=(id eq '47415390' or id eq '106266659')
进入这个
$filter=search.in(id, '47415390,106266659', ',')
注释