Översikt över dataimport – Azure Cognitive Search

I Azure Cognitive Search körs frågor över ditt innehåll som lästs in i och sparats i ett sökindex. Den här artikeln går igenom de två grundläggande metoderna för att fylla i ett index: skicka data till indexet programmatiskt eller peka en Azure Cognitive Search-indexerare mot en datakälla som stöds för att hämta data.

Med båda metoder är målet att läsa in data från en extern datakälla till ett Azure Cognitive Search index. Azure Cognitive Search kan du skapa ett tomt index, men det går inte att köra frågor mot det förrän du pushar eller hämtar data till det.

Anteckning

Om AI-berikning är ett lösningskrav måste du använda pull-modellen (indexerare) för att läsa in ett index. Extern bearbetning stöds endast via kunskapsuppsättningar som är kopplade till en indexerare.

Skicka data till ett index

Push-modellen, som används för att programmatiskt skicka data till Azure Cognitive Search, är den mest flexibla metoden. För det första finns det inga begränsningar på vilken typ av datakälla som får användas. Alla datauppsättningar som består av JSON-dokument kan push-skickas till ett Azure Cognitive Search-index, förutsatt att varje dokument i datauppsättningen har fält som mappar till fält som definierats i indexschemat. För det andra finns det inga begränsningar på körningsfrekvensen. Du kan skicka ändringar till ett index så ofta du vill. För program som har mycket låga fördröjningskrav (t.ex. om det är viktigt att sökåtgärder är synkroniserade med dynamiska inventeringsdatabaser) är push-modellen ditt enda alternativ.

Den här metoden är mer flexibel än pull-modellen eftersom du kan ladda upp dokument individuellt eller i batchar (upp till 1 000 per batch eller 16 MB, beroende på vilken gräns som nås först). Med push-modellen kan du också ladda upp dokument till Azure Cognitive Search oavsett var dina data finns.

Skicka data till ett Azure Cognitive Search index

Du kan använda följande API:er för att läsa in ett eller flera dokument i ett index:

Det finns för närvarande inget verktygsstöd för att skicka data via portalen.

En introduktion till varje metod finns i Snabbstart: Skapa ett Azure Cognitive Search-index med hjälp av PowerShell eller C#-snabbstart: Skapa ett Azure Cognitive Search-index med hjälp av .NET SDK.

Indexeringsåtgärder: ladda upp, sammanfoga, mergeOrUpload, ta bort

Du kan styra typen av indexeringsåtgärd per dokument och ange om dokumentet ska laddas upp i sin helhet, sammanfogas med befintligt dokumentinnehåll eller tas bort.

I REST API du HTTP POST-begäranden med JSON-begärandekroppar till Azure Cognitive Search-indexets slutpunkts-URL. Varje JSON-objekt i "value"-matrisen innehåller dokumentets nyckel och anger om en indexeringsåtgärd lägger till, uppdaterar eller tar bort dokumentinnehåll. Ett kodexempel finns i Läsa in dokument.

I .NET SDK paketerar du dina data i ett IndexBatch -objekt. En kapslar in en samling objekt som vart och ett innehåller ett dokument och en egenskap som Azure Cognitive Search vilken åtgärd som IndexBatch IndexAction ska utföras på dokumentet. Ett kodexempel finns i snabbstarten för C#.

@search.action Beskrivning Nödvändiga fält för varje dokument Kommentarer
upload En upload-åtgärd liknar en ”upsert” där dokumentet infogas om det är nytt och uppdateras/ersätts om det finns. nyckel plus eventuella andra fält som du vill definiera När du uppdaterar och ersätter ett befintligt dokument tilldelas alla fält som inte angetts i begäran null. Detta sker även om fältet tidigare hade ett värde som inte var null.
merge Uppdaterar ett befintligt dokument med de angivna fälten. Sammanfogningen misslyckas om dokumentet inte finns i indexet. nyckel plus eventuella andra fält som du vill definiera Alla fält som du anger i en sammanfogning ersätter det befintliga fältet i dokumentet. I .NET SDK omfattar detta fält av typen DataType.Collection(DataType.String) . I REST API omfattar detta fält av typen Collection(Edm.String) . Om dokumentet till exempel innehåller ett tags-fält med värdet ["budget"] och du utför en sammanfogning med värdet ["economy", "pool"] för tags så blir det slutliga värdet för fältet tags``["economy", "pool"]. Det blir inte ["budget", "economy", "pool"].
mergeOrUpload Den här åtgärden fungerar som merge om ett dokument med den angivna nyckeln redan finns i indexet. Om dokumentet inte finns fungerar den som upload med ett nytt dokument. nyckel plus eventuella andra fält som du vill definiera -
delete Tar bort det angivna dokumentet från indexet. endast nyckel Andra fält som du anger än nyckelfältet ignoreras. Om du vill ta bort ett enstaka fält från ett dokument använder du merge i stället och anger bara fältet till null.

Formulera frågan

Du kan söka i ditt index med hjälp av REST-API:et på två sätt. Ett sätt är att skicka en HTTP POST-begäran där dina frågeparametrar definieras i ett JSON-objekt i begärandetexten. Det andra sättet är att skicka en HTTP GET-begäran där dina frågeparametrar definieras i URL:en för begäran. POST har mindre restriktiva gränser vad gäller frågeparametrarnas storlek än GET. Av den anledningen rekommenderar vi att du använder POST såvida det inte finns särskilda omständigheter som gör att GET är lämpligare.

För både POST och GET måste du ange tjänstnamnet, indexnamnet och en API-version i begärande-URL:en.

För GET anger du frågeparametrarna i frågesträngen i slutet av URL:en. Se URL-formatet nedan:

    https://[service name].search.windows.net/indexes/[index name]/docs?[query string]&api-version=2019-05-06

Formatet för POST är detsamma, men med i api-version frågesträngsparametrarna.

Hämta in data till ett index

Datahämtningsmodellen crawlar en datakälla som stöds och överför automatiskt data till ditt index. I Azure Cognitive Search implementeras den här funktionen via indexerare, som för närvarande är tillgängliga för följande plattformar:

Indexerare ansluter ett index till en datakälla (vanligtvis en tabell, vy eller motsvarande struktur) och mappar källfält till motsvarande fält i indexet. Under körningen omvandlas raduppsättningen automatiskt till JSON och läses in i det angivna indexet. Alla indexerare stöder schemaläggning så att du kan ange hur ofta data ska uppdateras. De flesta indexerare tillhandahåller ändringsspårning om datakällan har stöd för det. Indexerare spårar ändringar och borttagningar av befintliga dokument och identifierar nya dokument, vilket gör att du slipper hantera dina data i indexet aktivt.

Så här hämtar du data till ett Azure Cognitive Search index

Indexerarfunktioner exponeras på Azure Portal, i REST-API:et och i .NET SDK.

En fördel med att använda portalen är att Azure Cognitive Search kan generera ett standardindexschema åt dig genom att läsa metadata för källdatauppsättningen. Du kan ändra det genererade indexet tills indexet har bearbetats. Därefter är de enda schemaändringarna som tillåts de som inte kräver omindexering. Om de ändringar som du vill göra påverkar schemat direkt måste indexet återskapas.

Verifiera dataimport med Sökutforskaren

Ett snabbt sätt att utföra en preliminär kontroll av dokumentuppladdningen är att använda Sökutforskaren i portalen. Med utforskaren kan du köra frågor mot ett index utan att behöva skriva kod. Sökupplevelsen baseras på standardinställningar, till exempel enkel syntax och standardsöklägesfrågeparametern. Resultaten returneras i JSON så att du kan gå igenom hela dokumentet.

Tips

Många Azure Cognitive Search kodexempel inkluderar inbäddade eller lättillgängliga datauppsättningar, vilket är ett enkelt sätt att komma igång. Portalen innehåller också en exempelindexerare och datakälla som består av en liten datauppsättning med fastighetsinformation (med namnet ”realestate-us-sample”). När du kör den förkonfigurerade indexeraren på exempeldatakällan skapas ett index och läses in med dokument som sedan kan efterfrågas i Sökutforskaren eller med kod som du skriver.

Se även