Azure Search示例酒店数据地址字段过滤失败问题排查请求
Azure Search地址字段过滤失效的原因及解决办法
核心问题:Azure Search中只有标记为
filterable: true的字段才能用于过滤,你使用的示例项目里,Address子字段(City、StreetAddress)默认未开启该属性。具体排查与修复步骤:
- 查看示例的索引创建代码:在quickstart项目中,定义Hotel索引时,Address作为复杂类型,其内部的City、StreetAddress字段默认仅设置了
searchable: true,未添加filterable: true配置。 - 修改索引字段定义:将Address下的City、StreetAddress字段的
filterable属性设为true,示例代码调整如下:new Field("Address/City", DataType.String) { Searchable = true, Filterable = true, // 新增该行开启过滤能力 Retrievable = true }, new Field("Address/StreetAddress", DataType.String) { Searchable = true, Filterable = true, // 新增该行开启过滤能力 Retrievable = true } - 重新部署索引:删除原有索引,用修改后的定义重新创建索引,再重新导入示例数据。
- 验证过滤表达式:此时再使用
$filter=Address/City eq 'San Antonio'或$filter=Address/StreetAddress eq '677 5th Ave'即可正常过滤。
- 查看示例的索引创建代码:在quickstart项目中,定义Hotel索引时,Address作为复杂类型,其内部的City、StreetAddress字段默认仅设置了
补充说明:你使用的
父字段/子字段格式的过滤语法是正确的,问题根源完全在于字段的可过滤属性未开启。
内容的提问来源于stack exchange,提问作者Geetha B
相关产品推荐
相关产品推荐

