موتور جست‌وجو و تحلیل

Elasticsearch مدیریت‌شده برای جست‌وجو و تحلیل

جست‌وجوی متن کامل با امتیازدهی ارتباط، aggregation برای گزارش و تحلیل لاگ؛ با REST API روی پورت 9200.

نسخه‌ها
9.4 (پیش‌فرض) و 9.3
API
REST روی 9200
احراز هویت
کاربر elastic و رمز
کاربرد
جست‌وجوی متن، لاگ، تحلیل
لوگوی Elasticsearch

جست‌وجو و تحلیل روی یک موتور

Elasticsearch متن را تحلیل و ایندکس می‌کند و نتیجه‌ها را بر اساس ارتباط مرتب می‌کند. با aggregation می‌توانید داده را گروه‌بندی و آمار بگیرید؛ برای جست‌وجوی فروشگاه، تحلیل لاگ و داشبورد مناسب است.

برای متن فارسی از analyzer مناسب استفاده کنید تا نرمال‌سازی حروف و نیم‌فاصله درست انجام شود. اگر فقط جست‌وجوی سریع با تحمل غلط تایپی می‌خواهید، Meilisearch ساده‌تر است.

مناسب برای

  • جست‌وجوی فروشگاه با فیلتر و facet
  • تحلیل و جست‌وجوی لاگ
  • داشبورد و گزارش با aggregation
  • جست‌وجوی اسناد و مقاله‌ها

از ساخت تا اتصال

  1. ساخت

    نود با نسخه‌ی پیش‌فرض 9.4 ساخته می‌شود.

    --type elasticsearch
  2. اطلاعات اتصال

    میزبان، کاربر و رمز را بگیرید و به اپ بدهید.

    env set ELASTICSEARCH_HOST=…
  3. استفاده

    ایندکس بسازید و از REST API جست‌وجو کنید.

    :9200

خروجی ساخت سرویس

sakoocloud db
sakoocloud db create --name search --type elasticsearch
✔ Provisioning search · db_4n8x2p
sakoocloud db credentials db_4n8x2p
sakoocloud env set ELASTICSEARCH_HOST=… ELASTICSEARCH_PASSWORD=•••• --app my-api

ساخت نود

با CLI یا از کنسول.

terminal
sakoocloud db create --name search --type elasticsearch

تنظیمات

متغیرهایی که تعریف می‌کنید

اپ و سرویس را در یک پروژه بگذارید، مقدارها را از sakoocloud db credentials بردارید و با sakoocloud env set تعریف کنید. نام متغیرها دلخواه است.

متغیر پیشنهادیمقدار
ELASTICSEARCH_HOSTآدرس داخلی (پورت 9200)
ELASTICSEARCH_USERelastic
ELASTICSEARCH_PASSWORDرمز تولیدشده

اتصال از اپ

کلاینت رسمی Elastic را با احراز هویت پایه وصل کنید.

import { Client } from "@elastic/elasticsearch";

const es = new Client({
  node: `http://${process.env.ELASTICSEARCH_HOST}:9200`,
  auth: {
    username: process.env.ELASTICSEARCH_USER,
    password: process.env.ELASTICSEARCH_PASSWORD,
  },
});

رانتایم‌هایی که معمولاً به آن وصل می‌شوند

خطاهای رایج

401 Unauthorized

علتدرخواست بدون نام کاربری و رمز ارسال شده است.

راه‌حلELASTICSEARCH_USER و ELASTICSEARCH_PASSWORD را به کلاینت بدهید.

اتصال روی پورت اشتباه

علتکلاینت به پورتی غیر از 9200 وصل می‌شود.

راه‌حلREST API روی 9200 است.

خطای حافظه یا heap

علتایندکس‌ها و کوئری‌ها از حافظه‌ی انتخابی بیشتر شده‌اند.

راه‌حلبا sakoocloud db resize حافظه را افزایش دهید.

پرسش‌های متداول

Elasticsearch یا Meilisearch؟

برای تحلیل، aggregation و کوئری پیچیده Elasticsearch؛ برای جست‌وجوی فوری سایت با تنظیم کم Meilisearch.

Kibana دارید؟

می‌توانید Kibana را به‌عنوان اپ Docker کنار آن اجرا کنید.

برای فارسی چه analyzer ای؟

analyzer داخلی persian نقطه‌ی شروع خوبی است و نرمال‌سازی حروف عربی و فارسی را انجام می‌دهد.

جزئیات بیشتر در راهنمای Elasticsearch در مستندات و مرجع CLI.

سریع‌ترین مسیر از کد تا انتشار.

ابتدا ابزار خط فرمان را نصب کنید، سپس همین‌جا امتحان کنید. (بنویسید، یا یکی از پیشنهادهای پایین ترمینال را بزنید)

~/projects/my-app
امتحان کنید