رفتن به محتوای مستندات

مستندات توسعه‌دهندگان ابربیت

جست‌وجوی اسناد

ساخت ایندکس، درج و جست‌وجوی اسناد و عملیات گروهی با API ابربیت.

دو آدرس، یک توکن پروژه

برای مدیریت ایندکس از آدرس Gateway در شروع سریع استفاده کنید؛ برای درج و جست‌وجوی داده از https://search.services.abrbit.com و همان توکن API پروژه استفاده می‌شود.

برای این سناریو، ابزارهای curl و jq و متغیرهای ABRBIT_API، ABRBIT_PROJECT و ABRBIT_TOKEN لازم‌اند. نام ایندکس در مسیرهای مصرف، نام کوتاه انتخابی شماست؛ مقدار name بازگشتی از مدیریت را برای حذف همان ایندکس نگه دارید.

توجه: ایندکس، اسناد و جست‌وجوها می‌توانند هزینه داشته باشند؛ نمونه را فقط در پروژهٔ آزمایشی خود اجرا کنید و تعرفهٔ جاری را در کنسول بررسی کنید.

ساخت ایندکس

نام یکتای آزمایشی خود را با حروف کوچک انگلیسی و عدد انتخاب کنید؛ شناسهٔ برگشتی را تا مرحلهٔ پاک‌سازی نگه دارید.

export ABRBIT_INDEX="api-demo-$(date +%s)-$RANDOM"
ABRBIT_INDEX_RESPONSE=$(jq -n --arg name "$ABRBIT_INDEX" '{name:$name}' | \
  curl --fail-with-body --silent --show-error \
    "$ABRBIT_API/api/v1/project/$ABRBIT_PROJECT/search-service/indexes/" \
    --header "Authorization: Bearer $ABRBIT_TOKEN" \
    --header 'Content-Type: application/json' --data-binary @-)
export ABRBIT_MANAGED_INDEX=$(printf '%s' "$ABRBIT_INDEX_RESPONSE" | jq -er '.name')

پاسخ موفق 200 شیء ایندکس است. فیلد name پاسخ مدیریت ممکن است با نام کوتاهی که وارد کردید فرق کند؛ برای مصرف داده نام کوتاه ABRBIT_INDEX و برای حذف مدیریت مقدار برگشتی ABRBIT_MANAGED_INDEX را به‌کار ببرید.

درج و جست‌وجو

بدنهٔ درخواست، خود سند JSON است؛ با id غیرخالی می‌توانید همان سند را دوباره درج یا به‌روزرسانی کنید. شناسهٔ نمونه مخصوص این آزمایش است.

curl --fail-with-body --silent --show-error \
  "https://search.services.abrbit.com/indexes/$ABRBIT_INDEX/documents" \
  --header "Authorization: Bearer $ABRBIT_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{"id":"demo-1","title":"نمونه جست‌وجو"}'

پاسخ موفق 200 شامل status و index است. درخواست ثبت سند در صورت نبود ایندکس می‌تواند ساخت اولیه را آغاز کند؛ برای مدیریت قابل‌پیش‌بینی، ابتدا ایندکس را بسازید.

curl --fail-with-body --silent --show-error \
  "https://search.services.abrbit.com/indexes/$ABRBIT_INDEX/_search" \
  --header "Authorization: Bearer $ABRBIT_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{"query":{"match_all":{}},"size":10}'

پاسخ موفق، نتیجهٔ JSON جست‌وجو است. نمایش سند تازه ممکن است تا نوبت تازه‌سازی ایندکس تأخیر داشته باشد؛ پیش از تلاش دوباره کمی صبر کنید.

عملیات گروهی

برای ارسال چند عملیات، ایندکس باید از قبل ساخته شده باشد. قالب درخواست application/x-ndjson است و هر خط، از جمله خط آخر، باید با نویسهٔ خط جدید پایان یابد.

ABRBIT_BULK_FILE=$(mktemp /tmp/abrbit-search-bulk.XXXXXX)
printf '%s\n' '{"index":{"_id":"demo-2"}}' '{"title":"سند دوم"}' \
  '{"delete":{"_id":"demo-1"}}' > "$ABRBIT_BULK_FILE"
curl --fail-with-body --silent --show-error \
  "https://search.services.abrbit.com/indexes/$ABRBIT_INDEX/_bulk" \
  --header "Authorization: Bearer $ABRBIT_TOKEN" \
  --header 'Content-Type: application/x-ndjson' --data-binary "@$ABRBIT_BULK_FILE"
rm -f "$ABRBIT_BULK_FILE"

هر درخواست حداکثر ۱۰۰۰ عملیات و ۵ MiB دارد؛ ساختار درخواست پیش از اجرا بررسی می‌شود. عملیات گروهی اتمی نیست؛ حتی با پاسخ 200، مقدار errors و وضعیت تک‌تک items را بررسی کنید. در قطع ارتباط یا پاسخ 502 نتیجه ممکن است نامشخص باشد؛ پیش از تکرار وضعیت اسناد را بررسی کنید.

مشاهده و پاک‌سازی

فهرست ایندکس‌ها از Gateway برمی‌گردد؛ پارامترهای offset و limit برای صفحه‌بندی این فهرست هستند.

curl --fail-with-body --silent --show-error \
  "$ABRBIT_API/api/v1/project/$ABRBIT_PROJECT/search-service/indexes/" \
  --header "Authorization: Bearer $ABRBIT_TOKEN"

توجه: حذف، ایندکس و اسناد آن را از بین می‌برد؛ فقط نام بازگشتی ایندکس آزمایشی همین سناریو را استفاده کنید.

if [ -n "$ABRBIT_MANAGED_INDEX" ]; then
  curl --fail-with-body --silent --show-error --request DELETE \
    "$ABRBIT_API/api/v1/project/$ABRBIT_PROJECT/search-service/indexes/$ABRBIT_MANAGED_INDEX/" \
    --header "Authorization: Bearer $ABRBIT_TOKEN"
fi

پاسخ موفق حذف 200 و حاوی message است. خلاصه، مصرف روزانه و برآورد ماه جاری نیز در مرجع مدیریت آمده‌اند؛ برآورد ماهانه بر محاسبات ساعتی تکمیل‌شده تکیه دارد و الزاماً مصرف لحظه‌ای نیست.

خطاها

برای 401، توکن پروژه را بررسی کنید؛ برای 404، وجود ایندکس و نام کوتاه آن را کنترل کنید. برای 413 و 415 در عملیات گروهی، اندازه و نوع محتوا را اصلاح کنید؛ راهنمای عمومی در خطاها و مسیرها در مرجع API است.