جستوجو و تحلیل روی یک موتور
Elasticsearch متن را تحلیل و ایندکس میکند و نتیجهها را بر اساس ارتباط مرتب میکند. با aggregation میتوانید داده را گروهبندی و آمار بگیرید؛ برای جستوجوی فروشگاه، تحلیل لاگ و داشبورد مناسب است.
برای متن فارسی از analyzer مناسب استفاده کنید تا نرمالسازی حروف و نیمفاصله درست انجام شود. اگر فقط جستوجوی سریع با تحمل غلط تایپی میخواهید، Meilisearch سادهتر است.
مناسب برای
- جستوجوی فروشگاه با فیلتر و facet
- تحلیل و جستوجوی لاگ
- داشبورد و گزارش با aggregation
- جستوجوی اسناد و مقالهها
از ساخت تا اتصال
ساخت
نود با نسخهی پیشفرض 9.4 ساخته میشود.
--type elasticsearchاطلاعات اتصال
میزبان، کاربر و رمز را بگیرید و به اپ بدهید.
env set ELASTICSEARCH_HOST=…استفاده
ایندکس بسازید و از REST API جستوجو کنید.
:9200
خروجی ساخت سرویس
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 یا از کنسول.
sakoocloud db create --name search --type elasticsearch
تنظیمات
متغیرهایی که تعریف میکنید
اپ و سرویس را در یک پروژه بگذارید، مقدارها را از sakoocloud db credentials بردارید و با sakoocloud env set تعریف کنید. نام متغیرها دلخواه است.
| متغیر پیشنهادی | مقدار |
|---|---|
ELASTICSEARCH_HOST | آدرس داخلی (پورت 9200) |
ELASTICSEARCH_USER | elastic |
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,
},
});
import os
from elasticsearch import Elasticsearch
es = Elasticsearch(
f'http://{os.environ["ELASTICSEARCH_HOST"]}:9200',
basic_auth=(os.environ["ELASTICSEARCH_USER"], os.environ["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.