開始使用自行託管的 Meilisearch
這個快速入門將引導您完成安裝 Meilisearch、新增文件以及執行首次搜尋。
要遵循本教學,您需要
提示
使用 Meilisearch Cloud 嗎?請查看專門的指南,開始使用 Meilisearch Cloud。
設定與安裝
首先,您需要下載並安裝 Meilisearch。此命令會在您的本機電腦上安裝最新版本的 Meilisearch
# Install Meilisearch
curl -L https://install.meilisearch.com | sh
本指南的其餘部分假設您在本機使用 Meilisearch,但您也可以透過雲端服務(例如Meilisearch Cloud)使用 Meilisearch。
在安裝指南中了解更多關於其他安裝選項的資訊。
執行 Meilisearch
接下來,在您的終端機中執行以下命令來啟動 Meilisearch
# Launch Meilisearch
./meilisearch --master-key="aSampleMasterKey"
注意
本教學使用 aSampleMasterKey
作為主金鑰,但您可以將其變更為任何 16 個或更多位元組的字母數字字串。在大多數情況下,一個字元對應一個位元組。
您應該會在回應中看到類似這樣的內容
888b d888 d8b 888 d8b 888
8888b d8888 Y8P 888 Y8P 888
88888b.d88888 888 888
888Y88888P888 .d88b. 888 888 888 .d8888b .d88b. 8888b. 888d888 .d8888b 88888b.
888 Y888P 888 d8P Y8b 888 888 888 88K d8P Y8b "88b 888P" d88P" 888 "88b
888 Y8P 888 88888888 888 888 888 "Y8888b. 88888888 .d888888 888 888 888 888
888 " 888 Y8b. 888 888 888 X88 Y8b. 888 888 888 Y88b. 888 888
888 888 "Y8888 888 888 888 88888P' "Y8888 "Y888888 888 "Y8888P 888 888
Database path: "./data.ms"
Server listening on: "localhost:7700"
您現在有一個 Meilisearch 執行個體正在您的終端機視窗中執行。在本教學的其餘部分,請保持此視窗開啟。
注意
上述命令使用 --master-key
設定選項來保護 Meilisearch。設定主金鑰是選用的,但在開發環境中強烈建議使用。在生產環境中,主金鑰是強制性的。
若要了解更多關於保護 Meilisearch 的資訊,請參閱安全性教學。
新增文件
在本快速入門中,您將搜尋一系列電影。
若要跟著操作,請先按一下此連結下載檔案:movies.json。然後,將下載的檔案移至您的工作目錄中。
注意
Meilisearch 接受 JSON、NDJSON 和 CSV 格式的資料。
開啟新的終端機視窗並執行以下命令
curl \
-X POST 'https://127.0.0.1:7700/indexes/movies/documents?primaryKey=id' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer aSampleMasterKey' \
--data-binary @movies.json
Meilisearch 將資料儲存在稱為文件的離散記錄中。每個文件都是由多個欄位組成的物件,這些欄位是一對屬性和一個值
{
"attribute": "value"
}
文件會分組為稱為索引的集合。
先前的命令將 movies.json
中的文件新增到名為 movies
的新索引中。它也將 id
設定為主索引鍵。
注意
每個索引都必須有一個主索引鍵,這是該索引中所有文件共有的屬性。如果您嘗試將文件新增到索引,而即使其中一個文件遺失了主索引鍵,也不會儲存任何文件。
如果您沒有明確設定主索引鍵,Meilisearch 會從您的資料集推斷出來。
新增文件後,您應該會收到類似這樣的回應
{
"taskUid": 0,
"indexUid": "movies",
"status": "enqueued",
"type": "documentAdditionOrUpdate",
"enqueuedAt": "2021-08-11T09:25:53.000000Z"
}
使用傳回的 taskUid
來檢查文件狀態
curl \
-X GET 'https://127.0.0.1:7700/tasks/0' \
-H 'Authorization: Bearer aSampleMasterKey'
注意
Meilisearch 中的大多數資料庫作業都是非同步的。API 請求會新增到佇列中並一次處理一個,而不是立即處理。
如果文件新增成功,則回應應該如下所示
{
"uid": 0,
"indexUid": "movies",
"status": "succeeded",
"type": "documentAdditionOrUpdate",
"canceledBy": null,
"details":{
"receivedDocuments": 19547,
"indexedDocuments": 19547
},
"error": null,
"duration": "PT0.030750S",
"enqueuedAt": "2021-12-20T12:39:18.349288Z",
"startedAt": "2021-12-20T12:39:18.352490Z",
"finishedAt": "2021-12-20T12:39:18.380038Z"
}
如果 status
是 enqueued
或 processing
,您只需要稍等片刻並再次檢查。一旦任務 status
變更為 succeeded
,請繼續執行下一步。
搜尋
現在您已設定好 Meilisearch,您可以開始搜尋!
curl \
-X POST 'https://127.0.0.1:7700/indexes/movies/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer aSampleMasterKey' \
--data-binary '{ "q": "botman" }'
注意
本教學會使用主金鑰查詢 Meilisearch。在生產環境中,這是一種安全風險。在任何公開的應用程式中,最好使用 API 金鑰來存取 Meilisearch 的 API。
在上面的程式碼範例中,參數 q
代表搜尋查詢。此查詢會指示 Meilisearch 在您於上一個步驟新增的文件中搜尋 botman
{
"hits": [
{
"id": 29751,
"title": "Batman Unmasked: The Psychology of the Dark Knight",
"poster": "https://image.tmdb.org/t/p/w1280/jjHu128XLARc2k4cJrblAvZe0HE.jpg",
"overview": "Delve into the world of Batman and the vigilante justice tha",
"release_date": "2008-07-15"
},
{
"id": 471474,
"title": "Batman: Gotham by Gaslight",
"poster": "https://image.tmdb.org/t/p/w1280/7souLi5zqQCnpZVghaXv0Wowi0y.jpg",
"overview": "ve Victorian Age Gotham City, Batman begins his war on crime",
"release_date": "2018-01-12"
},
…
],
"estimatedTotalHits": 66,
"query": "botman",
"limit": 20,
"offset": 0,
"processingTimeMs": 12
}
預設情況下,Meilisearch 只會傳回搜尋查詢的前 20 個結果。您可以使用limit
參數來變更此設定。
接下來呢?
您現在已了解如何安裝 Meilisearch、建立索引、新增文件、檢查非同步任務的狀態,以及發出搜尋請求。
如果您想使用乾淨的瀏覽器介面(而不是終端機)來搜尋您剛新增的文件,您可以使用我們內建的搜尋預覽來執行此操作。您也可以了解如何快速建立自己的前端介面。
若要採用更進階的方法,請參閱API 參考。