Ich möchte in C# programmatisch die Feldzuordnungen zwischen einem JSON-Objekt und dem Azure Search-Index definieren. Ich habe die Erklärung dafür gefunden, wie dies hier in Javascript tun https://azure.microsoft.com/en-us/documentation/articles/search-howto-index-json-blobs/AzureSearch-Indexfeldeinträge in C# -Code definieren
"fieldMappings" : [
{ "sourceFieldName" : "/article/text", "targetFieldName" : "text" },
{ "sourceFieldName" : "/article/datePublished", "targetFieldName" : "date" },
{ "sourceFieldName" : "/article/tags", "targetFieldName" : "tags" }
]
aber ich C# entsprechenden Code benötigen. Ich habe bisher versucht:
var index = new
{
name = "testindex",
fields = new []
{
//...
},
fieldMappings = new[]
{
new { sourceFieldName = "/status/text", targetFieldName = "text"}
}
}
aber dieser Code stürzt mit Ausnahme
{"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\"}}"}
Vorschläge, wie ich in C programmatisch können diese Feldzuordnungen # -Code definieren? Sollen diese fieldMappings innerhalb des Indexers der Indexdefinition definiert werden? Vielen Dank!
@LaterEdit: Von diesem Artikel Creating Collection in Azure Search Service using Indexer Ich fand, dass diese Zuordnungen auf dem Indexer definiert werden müssen, aber es ist immer noch der Fall, dass wenn ich sie beim Definieren des Indexers die Eigenschaft fieldMappings nicht vorhanden ist.
var indexer = new
{
name = "textixr",
dataSourceName = "testsdocdb",
schedule = new { interval = "PT5M" }, // every 5 minutes
targetIndexName = "test",
fieldMappings = new []
{
new { sourceFieldName = "/status/text", targetFieldName = "text" }
}
};
Vielen Dank für die Antwort. 2015-02-28-Vorschau gibt den Fehler nicht. Ich bin mir jedoch nicht sicher, wie eine Sql-ähnliche Abfrage in der container.query-Eigenschaft verwendet werden soll. Könnten Sie mir vielleicht ein Beispiel geben oder auf einen Artikel hinweisen, in dem dies erwähnt wird? – Crista23
Sie müssen eine SQL-Abfrage verwenden, wenn Sie die Datenquelle definieren, um Ihre Dokumente zu reduzieren, etwa SELECT c.id, c._ts, ** c.status.text AS-Text ** FROM Collection c WHERE c._ts> = @HighWaterMark . Der Artikel, mit dem ich verlinkt habe, hat Beispiele. –
Danke! Ich erstelle derzeit die DocumentDb-Datenbank, den AzureSearch-Indexer und den Indexer programmatisch in C#. Gibt es eine Möglichkeit, diese Syntax in C# aufzurufen? – Crista23