Azure 搜索中的动态字段映射

Dynamic field mapping in Azure Search

我正在 Azure 搜索服务中创建索引并寻找一种允许提交未知文件的方法。我的文档是半结构化的,这意味着我预先知道的领域很少。但我希望能够灵活地添加具有附加字段的文档。

例如:

{

    "name":"name1",
    "description":"description"
    "unknown,_simple":"test",
    "unknown_complex": [{
       "male":20,
       "female":30 
    }]
}

在上面的例子中,我知道 Name 和 Description 字段,所以它们被添加到具有正确映射的索引中。但是 unknow_simple 和 unknown_complex 类型是不知道的。用户可以在创建文档时提交这些。现在 Azure Search Rest API 正在抱怨以下错误消息

The request is invalid. Details: parameters : A resource without a type name was found, but no expected type was specified. To allow entries without type information, the expected type must also be specified when the model is specified

我怎样才能做到这一点?谢谢你的帮助。

据我了解,您想将索引设计为半结构化,"name" 和 "description" 是两个固定字段,具有固定数据类型。将有两个您不确定其数据类型的灵活字段。实际上,您可以将其数据类型定义为字符串。

假设您要在该字段中存储一个 json 对象,只需将您的 json 对象字符串化,以便您可以在该字段中设置该字符串值。下次需要时将此值转换为 json。

如果你想在你的动态字段中查询json对象的某个字段,你可以只使用json字符串片段作为查询键来搜索,如下所示:

假设 "Description" filed 是我的动态字段,它的值是一个 json 字符串,我可以使用键片段来获得我想要的结果。但它并不是那么优雅。