Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Feljegyzés
Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.
Az Azure AI Keresés képes JSON-dokumentumokat és tömböket indexelni az Azure Blob Storage-ban egy olyan indexelő használatával, amely képes félig strukturált adatok olvasására. A részben strukturált adatok olyan címkéket vagy jelöléseket tartalmaznak, amelyek elválasztják az adatok tartalmát. Felosztja a különbséget a strukturálatlan adatok között, amelyeket teljes mértékben indexelni kell, és formálisan strukturált adatok, amelyek megfelelnek egy adatmodellnek, például egy mezőnként indexelhető relációs adatbázisséma között.
Ez az oktatóanyag bemutatja, hogyan indexelheti a beágyazott JSON-tömböket EGY REST-ügyfél és a Search REST API-k használatával a következőkre:
- Mintaadatok beállítása és adatforrás konfigurálása
azureblob - Kereshető tartalmakat tartalmazó Azure AI Keresés-index létrehozása
- Indexelő létrehozása és futtatása a tároló olvasásához és kereshető tartalom kinyeréséhez
- Keresés az újonnan létrehozott indexben
Előfeltételek
Egy Azure-fiók, aktív előfizetéssel. Fiók létrehozása ingyenes.
Azure AI Keresés. Hozzon létre egy szolgáltatást , vagy keressen egy meglévő szolgáltatást az aktuális előfizetésében.
Visual Studio Code REST-ügyféllel.
Feljegyzés
Ehhez az oktatóanyaghoz ingyenes keresési szolgáltatást használhat. Az ingyenes szint három indexre, három indexelőre és három adatforrásra korlátozza. Az oktatóanyagban mindegyikből egyet hozhat majd létre. Mielőtt hozzákezd, győződjön meg arról, hogy van helye a szolgáltatásban az új erőforrások elfogadásához.
Fájlok letöltése
Töltse le a mintaadattár zip-fájlját, és bontsa ki a tartalmat. További tudnivalókat itt talál.
A mintaadatok egyetlen JSON-fájl, amely egy JSON-tömböt és 1521 beágyazott JSON-elemet tartalmaz. Az adatok a NY Filharmonikus Teljesítménytörténete adatbázisból, Kaggle-ról származnak. Egy JSON-fájlt választottunk, amely az ingyenes szint tárolási korlátai alatt marad.
Itt található az első beágyazott JSON a fájlban. A fájl fennmaradó része 1520 további koncertelőadási példányt tartalmaz.
{
"id": "7358870b-65c8-43d5-ab56-514bde52db88-0.1",
"programID": "11640",
"orchestra": "New York Philharmonic",
"season": "2011-12",
"concerts": [
{
"eventType": "Non-Subscription",
"Location": "Manhattan, NY",
"Venue": "Avery Fisher Hall",
"Date": "2011-09-07T04:00:00Z",
"Time": "7:30PM"
},
{
"eventType": "Non-Subscription",
"Location": "Manhattan, NY",
"Venue": "Avery Fisher Hall",
"Date": "2011-09-08T04:00:00Z",
"Time": "7:30PM"
}
],
"works": [
{
"ID": "5733*",
"composerName": "Bernstein, Leonard",
"workTitle": "WEST SIDE STORY (WITH FILM)",
"conductorName": "Newman, David",
"soloists": []
},
{
"ID": "0*",
"interval": "Intermission",
"soloists": []
}
]
}
Mintaadatok feltöltése az Azure Storage-ba
Az Azure Storage-ban hozzon létre egy új, ny-philharmonic-free nevű tárolót.
Szerezze be a tárolási karakterláncot, hogy kapcsolatot létrehozhasson az Azure AI Keresésben.
A bal oldalon válassza az Access-kulcsokat.
Másolja a(z) kapcsolati stringet az egyik vagy a másik kulcshoz. A kapcsolati karakterlánc hasonló a következő példához:
DefaultEndpointsProtocol=https;AccountName=<your account name>;AccountKey=<your account key>;EndpointSuffix=core.windows.net
Keresési szolgáltatás URL-címének és API-kulcsának másolása
Ebben az oktatóanyagban az Azure AI Kereséshez való csatlakozáshoz végpontra és API-kulcsra van szükség. Ezeket az értékeket az Azure Portalon szerezheti be. Alternatív kapcsolati módszerekért tekintse meg a felügyelt identitásokat.
Nyissa meg a keresési szolgáltatást az Azure Portalon.
A bal oldali panelen válassza az Áttekintés lehetőséget, és másolja ki a végpontot. Ennek a formátumnak a következő formátumban kell lennie:
https://my-service.search.windows.netA bal oldali panelen válassza a Beállítások>kulcsok lehetőséget, és másolja ki a teljes jogokat tartalmazó rendszergazdai kulcsot a szolgáltatásban. Két felcserélhető rendszergazdai kulcs áll rendelkezésre az üzletmenet folytonossága érdekében, ha át kell gördítenie egyet. Az objektumok hozzáadásához, módosításához vagy törléséhez a kérelmek egyik kulcsát használhatja.
A REST-fájl beállítása
Indítsa el a Visual Studio Code-ot, és hozzon létre egy új fájlt.
Adja meg a kérelemben használt változók értékeit.
@baseUrl = PUT-YOUR-SEARCH-SERVICE-ENDPOINT-HERE @apiKey = PUT-YOUR-ADMIN-API-KEY-HERE @storageConnection = PUT-YOUR-STORAGE-CONNECTION-STRING-HERE @blobContainer = PUT-YOUR-CONTAINER-NAME-HEREMentse a fájlt a
.restvagy a.httpfájlkiterjesztés használatával.
A REST-ügyféllel kapcsolatos segítségért tekintse meg a következő rövid útmutatót: Teljes szöveges keresés REST használatával.
Adatforrás létrehozása
Az Adatforrás létrehozása (REST) létrehoz egy adatforrás-kapcsolatot, amely meghatározza az indexelendő adatokat.
### Create a data source
POST {{baseUrl}}/datasources?api-version=2026-04-01 HTTP/1.1
Content-Type: application/json
api-key: {{apiKey}}
{
"name" : "ny-philharmonic-ds",
"description": null,
"type": "azureblob",
"subtype": null,
"credentials": {
"connectionString": "{{storageConnection}}"
},
"container": {
"name": "{{blobContainer}}",
"query": null
},
"dataChangeDetectionPolicy": null,
"dataDeletionDetectionPolicy": null
}
Küldje el a kérést. A válasznak így kell kinéznie:
HTTP/1.1 201 Created
Transfer-Encoding: chunked
Content-Type: application/json; odata.metadata=minimal; odata.streaming=true; charset=utf-8
ETag: "0x8DC43A5FDB8448F"
Location: https://<YOUR-SEARCH-SERVICE-NAME>.search.windows.net:443/datasources('ny-philharmonic-ds')?api-version=2026-04-01
Server: Microsoft-IIS/10.0
Strict-Transport-Security: max-age=2592000, max-age=15724800; includeSubDomains
Preference-Applied: odata.include-annotations="*"
OData-Version: 4.0
request-id: 7ca53f73-1054-4959-bc1f-616148a9c74a
elapsed-time: 111
Date: Wed, 13 Mar 2024 21:38:58 GMT
Connection: close
{
"@odata.context": "https://<YOUR-SEARCH-SERVICE-NAME>.search.windows.net/$metadata#datasources/$entity",
"@odata.etag": "\"0x8DC43A5FDB8448F\"",
"name": "ny-philharmonic-ds",
"description": null,
"type": "azureblob",
"subtype": null,
"credentials": {
"connectionString": null
},
"container": {
"name": "ny-philharmonic-free",
"query": null
},
"dataChangeDetectionPolicy": null,
"dataDeletionDetectionPolicy": null,
"encryptionKey": null
}
Index létrehozása
Az Index létrehozása (REST) létrehoz egy keresési indexet a keresési szolgáltatásban. Az index határozza meg az összes paramétert és ezek attribútumait.
Beágyazott JSON esetén az indexmezőknek meg kell egyezniük a forrásmezőkével. Az Azure AI Keresés jelenleg nem támogatja a beágyazott JSON-ra való mezőleképezést, ezért a mezőneveknek és adattípusoknak teljesen egyeznie kell. Az alábbi index a nyers tartalom JSON-elemeihez igazodik.
### Create an index
POST {{baseUrl}}/indexes?api-version=2026-04-01 HTTP/1.1
Content-Type: application/json
api-key: {{apiKey}}
{
"name": "ny-philharmonic-index",
"fields": [
{"name": "programID", "type": "Edm.String", "key": true, "searchable": true, "retrievable": true, "filterable": true, "facetable": true, "sortable": true},
{"name": "orchestra", "type": "Edm.String", "searchable": true, "retrievable": true, "filterable": true, "facetable": true, "sortable": true},
{"name": "season", "type": "Edm.String", "searchable": true, "retrievable": true, "filterable": true, "facetable": true, "sortable": true},
{ "name": "concerts", "type": "Collection(Edm.ComplexType)",
"fields": [
{ "name": "eventType", "type": "Edm.String", "searchable": true, "retrievable": true, "filterable": false, "sortable": false, "facetable": false},
{ "name": "Location", "type": "Edm.String", "searchable": true, "retrievable": true, "filterable": true, "sortable": false, "facetable": true },
{ "name": "Venue", "type": "Edm.String", "searchable": true, "retrievable": true, "filterable": true, "sortable": false, "facetable": true },
{ "name": "Date", "type": "Edm.String", "searchable": false, "retrievable": true, "filterable": true, "sortable": false, "facetable": true },
{ "name": "Time", "type": "Edm.String", "searchable": false, "retrievable": true, "filterable": true, "sortable": false, "facetable": true }
]
},
{ "name": "works", "type": "Collection(Edm.ComplexType)",
"fields": [
{ "name": "ID", "type": "Edm.String", "searchable": true, "retrievable": true, "filterable": false, "sortable": false, "facetable": false},
{ "name": "composerName", "type": "Edm.String", "searchable": true, "retrievable": true, "filterable": true, "sortable": false, "facetable": true },
{ "name": "workTitle", "type": "Edm.String", "searchable": true, "retrievable": true, "filterable": true, "sortable": false, "facetable": true },
{ "name": "conductorName", "type": "Edm.String", "searchable": true, "retrievable": true, "filterable": true, "sortable": false, "facetable": true },
{ "name": "soloists", "type": "Collection(Edm.String)", "searchable": true, "retrievable": true, "filterable": true, "sortable": false, "facetable": true }
]
}
]
}
Összefoglalás:
A mezőleképezések nem használhatók a mezőnevek és adattípusok közötti különbségek egyeztetésére. Ez az indexséma a nyers tartalom tükrözésére lett kialakítva.
A beágyazott JSON modellje a
Collection(Edm.ComplextType). A nyers tartalomban minden szezonban több koncert, és minden koncerthez több mű is tartozik. Ennek a struktúrának a kezeléséhez használjon gyűjteményeket az összetett típusokhoz.A nyers tartalomban a
DateésTimekarakterláncok, így az indexben a megfelelő adattípusok is karakterláncok.
Indexelő létrehozása és futtatása
Az Indexelő létrehozása létrehoz egy indexelőt a keresési szolgáltatásban. Az indexelő csatlakozik az adatforráshoz, betölti és indexeli az adatokat, és opcionálisan ütemezést biztosít az adatfrissítés automatizálásához.
Az indexelő konfigurációja magában foglalja az jsonArray elemzési módot és a documentRoot.
### Create and run an indexer
POST {{baseUrl}}/indexers?api-version=2026-04-01 HTTP/1.1
Content-Type: application/json
api-key: {{apiKey}}
{
"name" : "ny-philharmonic-indexer",
"dataSourceName" : "ny-philharmonic-ds",
"targetIndexName" : "ny-philharmonic-index",
"parameters" : {
"configuration" : {
"parsingMode" : "jsonArray", "documentRoot": "/programs"}
},
"fieldMappings" : [
]
}
Összefoglalás:
A nyers tartalomfájl egy JSON-tömböt (
"programs") tartalmaz 1526 beágyazott JSON-struktúrával. Állítsa be aparsingModeértékétjsonArray-re, hogy az indexelő számára minden blob egy JSON-tömböt tartalmazzon. Mivel a beágyazott JSON egy szinttel lejjebb indul, állítsa be adocumentRootértékét/programs-re.Az indexelő néhány percig fut. Várjon, amíg az indexelő végrehajtása befejeződik, mielőtt bármilyen lekérdezést futtat.
Lekérdezések futtatása
Az első dokumentum betöltése után azonnal megkezdheti a keresést.
### Query the index
POST {{baseUrl}}/indexes/ny-philharmonic-index/docs/search?api-version=2026-04-01 HTTP/1.1
Content-Type: application/json
api-key: {{apiKey}}
{
"search": "*",
"count": true
}
Küldje el a kérést. Ez egy meghatározatlan teljes szöveges keresési lekérdezés, amely az indexben lekérdezhetőként megjelölt mezőket és a dokumentumok számát adja vissza. A válasznak így kell kinéznie:
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json; odata.metadata=minimal; odata.streaming=true; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/10.0
Strict-Transport-Security: max-age=2592000, max-age=15724800; includeSubDomains
Preference-Applied: odata.include-annotations="*"
OData-Version: 4.0
request-id: a95c4021-f7b4-450b-ba55-596e59ecb6ec
elapsed-time: 106
Date: Wed, 13 Mar 2024 22:09:59 GMT
Connection: close
{
"@odata.context": "https://<YOUR-SEARCH-SERVICE-NAME>.search.windows.net/indexes('ny-philharmonic-index')/$metadata#docs(*)",
"@odata.count": 1521,
"@search.nextPageParameters": {
"search": "*",
"count": true,
"skip": 50
},
"value": [
],
"@odata.nextLink": "https://<YOUR-SEARCH-SERVICE-NAME>.search.windows.net/indexes/ny-philharmonic-index/docs/search?api-version=2026-04-01"
}
Adjon hozzá egy paramétert search egy sztringben való kereséshez, egy select paramétert, amely kevesebb mezőre korlátozza az eredményeket, és egy filter paraméterrel tovább szűkítheti a keresést.
### Query the index
POST {{baseUrl}}/indexes/ny-philharmonic-index/docs/search?api-version=2026-04-01 HTTP/1.1
Content-Type: application/json
api-key: {{apiKey}}
{
"search": "puccini",
"count": true,
"select": "season, concerts/Date, works/composerName, works/workTitle",
"filter": "season gt '2015-16'"
}
A válasz két dokumentumot ad vissza.
Szűrők esetén logikai operátorokat (és vagy nem) és összehasonlító operátorokat (eq, ne, gt, lt, ge, le) is használhat. A sztring-összehasonlítások megkülönböztetik a kis- és nagybetűket. További információkért és példákért lásd : Lekérdezés létrehozása.
Feljegyzés
A $filter paraméter csak az index létrehozásakor szűrhetőként megjelölt mezőkön működik.
Alaphelyzetbe állítás és ismételt futtatás
Az indexelők visszaállíthatók, aminek eredményeként törlődik a végrehajtási előzmények, és ez lehetővé teszi a teljes újrafuttatást. A következő POST-kérések visszaállításra, majd újrafuttatásra szolgálnak.
### Reset the indexer
POST {{baseUrl}}/indexers/ny-philharmonic-indexer/reset?api-version=2026-04-01 HTTP/1.1
api-key: {{apiKey}}
### Run the indexer
POST {{baseUrl}}/indexers/ny-philharmonic-indexer/run?api-version=2026-04-01 HTTP/1.1
api-key: {{apiKey}}
### Check indexer status
GET {{baseUrl}}/indexers/ny-philharmonic-indexer/status?api-version=2026-04-01 HTTP/1.1
api-key: {{apiKey}}
Az erőforrások rendezetten kezelése
Ha a saját előfizetésedben dolgozol, a projekt végén jó ötlet eltávolítani a már nem szükséges erőforrásokat. A továbbra is futó erőforrások költségekkel járhatnak. Az erőforrásokat törölheti egyesével, vagy az erőforráscsoport törlésével eltávolíthatja a benne lévő összes erőforrást is.
Az Azure Portal használatával törölheti az indexeket, indexelőket és adatforrásokat.
Következő lépések
Most, hogy megismerte az Azure Blob-indexelés alapjait, tekintse meg közelebbről az Azure Storage-beli JSON-blobok indexelőkonfigurációját: