如何过滤Azure搜索索引中的数组Json数据?

问题描述 投票:0回答:1

我需要在 Azure 搜索索引中搜索 JSON 数据,但查询无法过滤 Json 数组数据。

{
    "select": "id, data/prices",
    "filter": "data/prices ne null"
}

收到错误:

无效表达式:二元运算符“NotEqual”的操作数不是单个值。二元运算符要求两个操作数都是单个值。 参数名称:$filter

有没有办法也过滤数组类型的数据?

以下是我的项目数据,可在索引中找到。

"data": {
  "prices": [
       {
         "currency": "IN",
         "price": 99,
       }
   ]
}

提前致谢!

azure search indexing azure-cognitive-search
1个回答
0
投票

下面的过滤器检索“prices”数组中至少一个元素具有非空货币和非零价格的文档。

{

"select": "id, data/prices",

"filter": "data/prices/any(p: p/currency ne null and p/price ne 0)"

}

索引字段:

enter image description here

输出:

上面的过滤器表达式检查每个文档的“data”对象内“prices”数组中的每个元素。它会过滤“prices”数组中至少一个元素具有非空货币 (

p/currency ne null
) 和非零价格 (
p/price ne 0
) 的文档。

enter image description here

我使用的示例数据:

[
  {
    "id": "1",
    "data": {
      "prices": [
        {
          "currency": "IN",
          "price": 99
        }
      ]
    }
  },
  {
    "id": "2",
    "data": {
      "prices": [
        {
          "currency": "IN",
          "price": 75
        }
      ]
    }
  },
  {
    "id": "3",
    "data": {
      "prices": [
        {
          "currency": "GBP",
          "price": 30
        }
      ]
    }
  },
  {
    "id": "4",
    "data": {
      "prices": [
        {
          "currency": null,
          "price": 0
        }
      ]
    }
  }
]
© www.soinside.com 2019 - 2024. All rights reserved.