在 C# 代码中定义 AzureSearch 索引字段映射
Define AzureSearch index fieldmappings in c# code
我想在 C# 中以编程方式定义 JSON 对象和 Azure 搜索索引之间的字段映射。我在 Javascript 此处 https://azure.microsoft.com/en-us/documentation/articles/search-howto-index-json-blobs/
中找到了有关如何执行此操作的说明
"fieldMappings" : [
{ "sourceFieldName" : "/article/text", "targetFieldName" : "text" },
{ "sourceFieldName" : "/article/datePublished", "targetFieldName" : "date" },
{ "sourceFieldName" : "/article/tags", "targetFieldName" : "tags" }
]
但是我需要 C# 等效代码。到目前为止我已经尝试过:
var index = new
{
name = "testindex",
fields = new []
{
//...
},
fieldMappings = new[]
{
new { sourceFieldName = "/status/text", targetFieldName = "text"}
}
}
但是此代码崩溃并出现异常
{"Azure Search request failed:{\"error\":{\"code\":\"\",\"message\":\"The request is invalid. Details: index : The property 'fieldMappings' does not exist on type 'Microsoft.Azure.Search.V2015_02_28.IndexDefinition'. Make sure to only use property names that are defined by the type.\r\n\"}}"}
关于如何在 C# 代码中以编程方式定义这些字段映射有什么建议吗?此外,这些 fieldMappings 是否应该在索引定义的索引器中定义?谢谢!
@LaterEdit:从这篇文章我发现这些映射必须在索引器上定义,但是如果我在定义索引器时添加它们仍然是这样 属性字段映射不存在。
var indexer = new
{
name = "textixr",
dataSourceName = "testsdocdb",
schedule = new { interval = "PT5M" }, // every 5 minutes
targetIndexName = "test",
fieldMappings = new []
{
new { sourceFieldName = "/status/text", targetFieldName = "text" }
}
};
您需要使用api-版本2015-02-28-预览。字段映射在 2015-02-28 中不可用。
顺便说一句,只有在使用 blob 索引器索引 JSON 个 blob 时,才能使用具有 JSON 个指针的字段映射(例如 /status/text
)。它们不能与 DocumentDB 索引器一起使用。要使用 DocumentDB 投影嵌套属性,请在数据源定义的 container.query 属性 中使用类似 SQL 的查询。有关 DocumentDB 索引器的更多信息,请查看 this article
我想在 C# 中以编程方式定义 JSON 对象和 Azure 搜索索引之间的字段映射。我在 Javascript 此处 https://azure.microsoft.com/en-us/documentation/articles/search-howto-index-json-blobs/
中找到了有关如何执行此操作的说明 "fieldMappings" : [
{ "sourceFieldName" : "/article/text", "targetFieldName" : "text" },
{ "sourceFieldName" : "/article/datePublished", "targetFieldName" : "date" },
{ "sourceFieldName" : "/article/tags", "targetFieldName" : "tags" }
]
但是我需要 C# 等效代码。到目前为止我已经尝试过:
var index = new
{
name = "testindex",
fields = new []
{
//...
},
fieldMappings = new[]
{
new { sourceFieldName = "/status/text", targetFieldName = "text"}
}
}
但是此代码崩溃并出现异常
{"Azure Search request failed:{\"error\":{\"code\":\"\",\"message\":\"The request is invalid. Details: index : The property 'fieldMappings' does not exist on type 'Microsoft.Azure.Search.V2015_02_28.IndexDefinition'. Make sure to only use property names that are defined by the type.\r\n\"}}"}
关于如何在 C# 代码中以编程方式定义这些字段映射有什么建议吗?此外,这些 fieldMappings 是否应该在索引定义的索引器中定义?谢谢!
@LaterEdit:从这篇文章
var indexer = new
{
name = "textixr",
dataSourceName = "testsdocdb",
schedule = new { interval = "PT5M" }, // every 5 minutes
targetIndexName = "test",
fieldMappings = new []
{
new { sourceFieldName = "/status/text", targetFieldName = "text" }
}
};
您需要使用api-版本2015-02-28-预览。字段映射在 2015-02-28 中不可用。
顺便说一句,只有在使用 blob 索引器索引 JSON 个 blob 时,才能使用具有 JSON 个指针的字段映射(例如 /status/text
)。它们不能与 DocumentDB 索引器一起使用。要使用 DocumentDB 投影嵌套属性,请在数据源定义的 container.query 属性 中使用类似 SQL 的查询。有关 DocumentDB 索引器的更多信息,请查看 this article