2 – Keresési index létrehozása és betöltése JavaScript használatával
Folytassa a kereséssel kompatibilis webhely összeállítását az alábbi lépések végrehajtásával:
- Keresési erőforrás létrehozása
- Új index létrehozása
- Adatok importálása JavaScript használatával a bulk_insert_books szkript és az Azure SDK @azure/search-documents használatával.
Azure AI Search-erőforrás létrehozása
Hozzon létre egy új keresési erőforrást a parancssorból az Azure CLI vagy az Azure PowerShell használatával. Lekérhet egy lekérdezési kulcsot is, amely az index olvasási elérésére szolgál, és lekéri az objektumok hozzáadásához használt beépített rendszergazdai kulcsot.
Az eszközön telepítve kell lennie az Azure CLI-nek vagy az Azure PowerShellnek. Ha nem helyi rendszergazda az eszközön, válassza az Azure PowerShellt, és használja a Scope
paramétert az aktuális felhasználóként való futtatáshoz.
Feljegyzés
Ehhez a feladathoz nem szükséges az Azure CLI és az Azure PowerShell Visual Studio Code-bővítménye. A Visual Studio Code felismeri a parancssori eszközöket bővítmények nélkül.
A Visual Studio Code Terminál területén válassza az Új terminál lehetőséget.
Csatlakozás az Azure-hoz:
az login
Új keresési szolgáltatás létrehozása előtt listázhatja az előfizetéséhez tartozó meglévő szolgáltatásokat:
az resource list --resource-type Microsoft.Search/searchServices --output table
Ha van egy használni kívánt szolgáltatása, jegyezze fel a nevet, majd ugorjon tovább a következő szakaszra.
Hozzon létre egy új keresési szolgáltatást. Használja a következő parancsot sablonként, és helyettesítse az erőforráscsoport, a szolgáltatásnév, a réteg, a régió, a partíciók és a replikák érvényes értékeit. Az alábbi utasítás az előző lépésben létrehozott "cognitive-search-demo-rg" erőforráscsoportot használja, és megadja az "ingyenes" szintet. Ha az Azure-előfizetése már rendelkezik ingyenes keresési szolgáltatással, adjon meg egy számlázható szintet, például az "alapszintűt".
az search service create --name my-cog-search-demo-svc --resource-group cognitive-search-demo-rg --sku free --partition-count 1 --replica-count 1
Lekérhet egy lekérdezési kulcsot, amely olvasási hozzáférést biztosít egy keresési szolgáltatáshoz. A keresési szolgáltatás két rendszergazdai kulccsal és egy lekérdezési kulccsal van kiépítve. Cserélje le az erőforráscsoport és a keresési szolgáltatás érvényes nevét. Másolja a lekérdezési kulcsot a Jegyzettömbbe, hogy egy későbbi lépésben beilleszthesse azt az ügyfélkódba:
az search query-key list --resource-group cognitive-search-demo-rg --service-name my-cog-search-demo-svc
Keresési szolgáltatás rendszergazdai API-kulcsának lekérése. A rendszergazdai API-kulcs írási hozzáférést biztosít a keresési szolgáltatáshoz. Másolja az egyik rendszergazdai kulcsot a Jegyzettömbbe, hogy az indexet létrehozó és betöltő tömeges importálási lépésben használhassa:
az search admin-key show --resource-group cognitive-search-demo-rg --service-name my-cog-search-demo-svc
A tömeges importálási szkript előkészítése a Kereséshez
Az ESM-szkript az Azure SDK-t használja az Azure AI Searchhöz:
A Visual Studio Code-ban nyissa meg a
bulk_insert_books.js
fájlt az alkönyvtárban,search-website-functions-v4/bulk-insert
és cserélje le a következő változókat a saját értékeire az Azure Search SDK-val való hitelesítéshez:- ÖN-SEARCH-RESOURCE-NAME
- YOUR-SEARCH-ADMIN-KEY
import fetch from 'node-fetch'; import Papa from 'papaparse'; import { SearchClient, SearchIndexClient, AzureKeyCredential } from '@azure/search-documents'; // Azure AI Search resource settings const SEARCH_ENDPOINT = 'https://YOUR-RESOURCE-NAME.search.windows.net'; const SEARCH_ADMIN_KEY = 'YOUR-RESOURCE-ADMIN-KEY'; // Azure AI Search index settings const SEARCH_INDEX_NAME = 'good-books'; import SEARCH_INDEX_SCHEMA from './good-books-index.json' assert { type: 'json' }; // Data settings const BOOKS_URL = 'https://raw.githubusercontent.com/Azure-Samples/azure-search-sample-data/main/good-books/books.csv'; const BATCH_SIZE = 1000; // Create Search service client // used to upload docs into Index const client = new SearchClient( SEARCH_ENDPOINT, SEARCH_INDEX_NAME, new AzureKeyCredential(SEARCH_ADMIN_KEY) ); // Create Search service Index client // used to create new Index const clientIndex = new SearchIndexClient( SEARCH_ENDPOINT, new AzureKeyCredential(SEARCH_ADMIN_KEY) ); // Insert docs into Search Index // in batch const insertData = async (data) => { let batch = 0; let batchArray = []; for (let i = 0; i < data.length; i++) { const row = data[i]; // Convert string data to typed data // Types are defined in schema batchArray.push({ id: row.book_id, goodreads_book_id: parseInt(row.goodreads_book_id), best_book_id: parseInt(row.best_book_id), work_id: parseInt(row.work_id), books_count: !row.books_count ? 0 : parseInt(row.books_count), isbn: row.isbn, isbn13: row.isbn13, authors: row.authors.split(',').map((name) => name.trim()), original_publication_year: !row.original_publication_year ? 0 : parseInt(row.original_publication_year), original_title: row.original_title, title: row.title, language_code: row.language_code, average_rating: !row.average_rating ? 0 : parseFloat(row.average_rating), ratings_count: !row.ratings_count ? 0 : parseInt(row.ratings_count), work_ratings_count: !row.work_ratings_count ? 0 : parseInt(row.work_ratings_count), work_text_reviews_count: !row.work_text_reviews_count ? 0 : parseInt(row.work_text_reviews_count), ratings_1: !row.ratings_1 ? 0 : parseInt(row.ratings_1), ratings_2: !row.ratings_2 ? 0 : parseInt(row.ratings_2), ratings_3: !row.ratings_3 ? 0 : parseInt(row.ratings_3), ratings_4: !row.ratings_4 ? 0 : parseInt(row.ratings_4), ratings_5: !row.ratings_5 ? 0 : parseInt(row.ratings_5), image_url: row.image_url, small_image_url: row.small_image_url }); console.log(`${i}`); // Insert batch into Index if (batchArray.length % BATCH_SIZE === 0) { await client.uploadDocuments(batchArray); console.log(`BATCH SENT`); batchArray = []; } } // Insert any final batch into Index if (batchArray.length > 0) { await client.uploadDocuments(batchArray); console.log(`FINAL BATCH SENT`); batchArray = []; } }; const bulkInsert = async () => { // Download CSV Data file const response = await fetch(BOOKS_URL, { method: 'GET' }); if (response.ok) { console.log(`book list fetched`); const fileData = await response.text(); console.log(`book list data received`); // convert CSV to JSON const dataObj = Papa.parse(fileData, { header: true, encoding: 'utf8', skipEmptyLines: true }); console.log(`book list data parsed`); // Insert JSON into Search Index await insertData(dataObj.data); console.log(`book list data inserted`); } else { console.log(`Couldn\t download data`); } }; // Create Search Index async function createIndex() { SEARCH_INDEX_SCHEMA.name = SEARCH_INDEX_NAME; const result = await clientIndex.createIndex(SEARCH_INDEX_SCHEMA); } await createIndex(); console.log('index created'); await bulkInsert(); console.log('data inserted into index');
Nyisson meg egy integrált terminált a Visual Studióban a projektkönyvtár alkönyvtárához,
search-website-functions-v4/bulk-insert
és futtassa a következő parancsot a függőségek telepítéséhez.npm install
A keresés tömeges importálási szkriptjének futtatása
A szkript futtatásához
bulk_insert_books.js
folytassa a Visual Studio integrált termináljának használatát a projektkönyvtár alkönyvtáráhozsearch-website-functions-v4/bulk-insert
:npm start
A kód futtatásakor a konzol megjeleníti az előrehaladást.
Amikor a feltöltés befejeződött, a konzolra nyomtatott utolsó utasítás "kész".
Az új keresési index áttekintése
A feltöltés befejezése után a keresési index készen áll a használatra. Tekintse át az új indexet az Azure Portalon.
Az Azure Portalon keresse meg az előző lépésben létrehozott keresési szolgáltatást .
A bal oldalon válassza az Indexek lehetőséget, majd a jó könyvek indexét.
Alapértelmezés szerint az index a Kereséskezelő lapon nyílik meg. A Keresés gombra kattintva dokumentumokat ad vissza az indexből.
Tömeges importálási fájlmódosítások visszaállítása
A módosítások visszaállításához használja az alábbi Git-parancsot a bulk-insert
Visual Studio Code integrált termináljában. Ezekre nincs szükség az oktatóanyag folytatásához, és ezeket a titkos kulcsokat nem szabad mentenie vagy leküldnie az adattárba.
git checkout .
A Keresési erőforrás nevének másolása
Jegyezze fel a keresési erőforrás nevét. Erre szüksége lesz az Azure-függvényalkalmazás és a keresési erőforrás összekapcsolásához.
Figyelemfelhívás
Bár előfordulhat, hogy a keresési rendszergazdai kulcsot az Azure-függvényben szeretné használni, ez nem követi a minimális jogosultság elvét. Az Azure-függvény a lekérdezési kulccsal felel meg a minimális jogosultságnak.
Következő lépések
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: