[Meilisearch] ์์
์ด์ ํฌ์คํธ
https://blog.naver.com/sssang97
linux ๋ก์ปฌ ํ๊ฒฝ์์ meilisearch๋ฅผ ์ค์นํ๊ณ ๊ฐ๋จํ๊ฒ ๋ค๋ค๋ณด๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ๋ค.
์ค์น
์ค์น๋ ๊ฐ๋จํ ์์ฝ๋ ํ์ค๋ก ๋๋ผ ์ ์๋ค.
curl -L https://install.meilisearch.com | sh

๊ทธ๋ฌ๋ฉด ์ด๋ ๊ฒ, ์คํํ ์์ ์ ๊ฒฝ๋ก๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ด๋๋ฆฌ๊ฐ ํ๋ ์์ฑ๋ ๊ฒ์ด๋ค.
๊ทธ๋์ ์ ์คํ๋๋ฉด ๋ ๊ฒ์ด๋ค.
์๋ฒ ์คํ
์ด์ ๊ฒ์์์ง ์๋ฒ๋ฅผ ๋์๋ณด์.
์๋์ ๊ฐ์ด ๋ง์คํฐํค๋ฅผ ์ฃผ์ ์คํ์ํค๋ฉด ์ ๋ง ๊ฐ๋จํ๊ฒ ๋ฌ๋ค. ํจ์ค์๋๋ 16๋ฐ์ดํธ ์ด์์ ๋ฌธ์์ด์ด๋ฉด ๋๋ค.
./meilisearch --master-key="ํจ์ค์๋..."

๊ทธ๋ฌ๋ฉด open๋ ํธ์คํธ๋ฅผ ํตํด ์น ์ฝ์์ ํ์ธํ ์๋ ์๊ณ ,


๊ทธ๋ฅ rest API๋ฅผ ์ด์ ์ํธ์์ฉ์ ํ ์๋ ์๋ค.

๋ฐ์ดํฐ ๊ธฐ๋ณธ๊ตฌ์กฐ
meilisearch๋ elastic search์ ๋น์ทํ ์คํค๋ง ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฅธ๋ค.
๋จผ์ ์ธ๋ฑ์ค๊ฐ ์กด์ฌํ๋ค. ์ธ๋ฑ์ค๋ ์ผ์ข
์ ํ
์ด๋ธ ๋จ์๋ผ๊ณ ํ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ธ๋ฑ์ค์๋ ์ฌ๋ฌ๊ฐ์ document๊ฐ ๋ค์ด๊ฐ ์ ์๋ค. document ํ๋ํ๋๊ฐ ๊ฐ๊ฐ์ ๋ฐ์ดํฐ ํ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
์์ธํ๊ฑด ๋ณ๋ ํฌ์คํธ์์ ์์ธํ ๋ค๋ฃจ๊ฒ ๋ค.
์ํ ๋ฐ์ดํฐ ๋ฃ์ด๋ณด๊ธฐ
meilisearch์์ ๊ณต์์ ์ผ๋ก ์ ๊ณตํ๋ ์ํ์ ๋ฃ์ด์ ํ๋ฒ ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ๋ณด๋๋ก ํ์.
์ธ์ด๋ nodejs๋ฅผ ์ฌ์ฉํ๊ฒ ๋ค. json ๋ฐ์ดํฐ ๊ธ์ด์ค๊ณ ์กฐํํ๊ธฐ๊ฐ ํธํด์ ๊ณจ๋๋ค.
๋ค์ด๋ก๋ => https://www.meilisearch.com/movies.json
์ด๋ ๊ฒ ์๊ฒจ๋จน์๋ค.
๋ณต์กํ ๊ฒ์ ์๋ค. ๊ณ ์ ๋ฒํธ๋ก id๊ฐ ์๊ณ , ์ด๋ฏธ์ง ๋งํฌ์ ์ผ๋ฐ ํ
์คํธ, ์ ์ ํ๋๊ฐ ์์ฌ์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ด๋ฃ์ด์ค ์ฝ๋๋ฅผ ์์ฑํ์.
์ฐ์ ๋ค์ ๋ชจ๋์ ์ค์นํ๋ค.
npm install meilisearch

์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ํํ๋ก ์์ฑํ๋ฉด ๋๋ค.

const { MeiliSearch } = require("meilisearch");
const movies = require("./movies.json");
async function main() {
const client = new MeiliSearch({
host: "http://localhost:7700",
apiKey: "q1w2e3r4asdf",
});
await client.index("movies").addDocuments(movies);
console.log("done");
}
main();
"movies"๋ผ๋ ์ธ๋ฑ์ค์ ์ํ json ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋๋ก ๋ฐ์ด๋ฃ๊ฒ ๋ค๋ ์ ์ธ์ด๋ค.
์ธ๋ฑ์ค๋ ์๋์ผ๋ก ์์ฑ๋๊ณ , ์ธ๋ฑ์ค ์คํค๋ง๋ฅผ ์ง์ ์ ์ํ ํ์๋ ์๋ค. json ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ ์๋์์ฑํ๋ค.
์ ๋๋ก ์คํํ๊ณ

์ฝ๊ฐ ๊ธฐ๋ค๋ฆฌ๋ฉด
์ด๋ ๊ฒ ์น ์ฝ์์์ ํ์ธ์ด ๊ฐ๋ฅํด์ง ๊ฒ์ด๋ค.
๋ฐ๋ก ๊ฐ๋จํ๊ฒ ๊ฒ์๋ ๊ฐ๋ฅํ๋ค.
๋๋ ์ด๋ฏธ์ง๋ ์ธ์ํด์ ์๋์ผ๋ก ์ธ๋ค์ผ ๋์์ฃผ๋๊ฒ ๊ต์ฅํ ์ ์ ํ๋ค.
์ฝ๋์์๋ ๊ฐ๋จํ๊ฒ search๋ฅผ ์ํํ ์ ์๋ค.
์๋ ์ฝ๋๋ ์น ์ฝ์์์ ๋ฐฉ๊ธ ํ๋ ๊ฒ๊ณผ ์์ ํ๊ฒ ๋์ผํ๊ฒ ๊ฒ์์ ์ํํ๋ ์ฝ๋๋ค.
const { MeiliSearch } = require("meilisearch");
const movies = require("./movies.json");
async function main() {
const client = new MeiliSearch({
host: "http://localhost:7700",
apiKey: "q1w2e3r4asdf",
});
const result = await client.index("movies").search("kunhu"); // kunhu๋ผ๋ ํค์๋๋ก ๊ฒ์
console.log(result);
}
main();
๊ฒ์ ์ต์ ์ ๋ณต์กํ๊ฒ ์ค ์๋ ์์ง๋ง, ์ด๋ ๊ฒ ๊ทธ๋ฅ ๊ฐ๋จํ๊ฒ ํ ์คํธ๋ง ๋ ๋ ค์ ๊ฒ์์ ๋๋ฆด ์๋ ์๋ค.
๊ทธ๋ฌ๋ฉด ์ ๋์ํ ๊ฒ์ด๋ค.
์ฐธ์กฐ
https://www.meilisearch.com/docs/learn/getting_started/quick_start