Azure搜索查询以过滤JSON值

时间:2019-05-08 17:13:47

标签: azure azure-search

我正在尝试构建Azure搜索查询的框架。字段类型是Azure搜索索引中的collection(Edm.String)。这就是我要过滤的JSON数据的样子:[“ A”,“ B”]。

当我尝试使用查询字母“ A”进行过滤时,它将带入所有带有“ A”的条目。但是,当我尝试在我的代码中构架相同的查询时,例如“字母中的'A'”,则会引发异常,说明:

  

“无效的表达式:表达式包含不受支持的OData语言功能。请修改查询,然后重试。
  参数名称:$ filter“。

还有其他可用于过滤JSON数据的Azure查询吗?

注意:我不能使用eq,因为我的字段是多值的,并且eq只能处理单个值。

2 个答案:

答案 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