我正在尝试构建Azure搜索查询的框架。字段类型是Azure搜索索引中的collection(Edm.String)。这就是我要过滤的JSON数据的样子:[“ A”,“ B”]。
当我尝试使用查询字母“ A”进行过滤时,它将带入所有带有“ A”的条目。但是,当我尝试在我的代码中构架相同的查询时,例如“字母中的'A'”,则会引发异常,说明:
“无效的表达式:表达式包含不受支持的OData语言功能。请修改查询,然后重试。
参数名称:$ filter“。
还有其他可用于过滤JSON数据的Azure查询吗?
注意:我不能使用eq,因为我的字段是多值的,并且eq只能处理单个值。
答案 0 :(得分:0)
如果要过滤需要包含多个值的集合,即,要查询所有集合都具有“ A”和“ B”的结果,请尝试以下过滤器表达式:
假设您的集合字段名称为“字母”
$filter=alphabet/any(s: s eq 'A') and alphabet/any(s: s eq 'B')
答案 1 :(得分:0)
解决方案是使用search.ismatch查询,例如search.ismatch('A,B','Alphabet','simple','any')。因此,该结果将具有所有具有A或B或两者都有的记录的搜索结果。
参考:https://docs.microsoft.com/en-us/azure/search/query-odata-filter-orderby-syntax