از طریق پیغام خطا یک فهرست گم شده ایجاد کنید
اگر یک پرس و جو مرکب با یک بند محدوده که به یک شاخص موجود نگاشت نمی شود، با یک خطا مواجه می شوید. پیام خطا شامل یک پیوند مستقیم برای ایجاد نمایه گمشده در کنسول Firebase است.
پیوند ایجاد شده را به کنسول Firebase دنبال کنید، اطلاعات تکمیل شده به صورت خودکار را بررسی کنید و روی ایجاد کلیک کنید.
از کنسول Firebase استفاده کنید
برای ایجاد دستی یک فهرست جدید از کنسول Firebase:
- به بخش Cloud Firestore کنسول Firebase بروید.
- به تب Indexes بروید و روی Add Index کلیک کنید.
- نام مجموعه را وارد کنید و فیلدهایی را که می خواهید فهرست را بر اساس آنها مرتب کنید تنظیم کنید.
- روی ایجاد کلیک کنید.
بسته به اندازه پرس و جو، ساخت ایندکس ها ممکن است چند دقیقه طول بکشد. پس از ایجاد آنها، می توانید نمایه های خود و وضعیت آنها را در قسمت Composite Indexes مشاهده کنید. اگر هنوز در حال ساختن هستند، کنسول Firebase دارای نوار وضعیت ساختمان است.
فهرست ها را حذف کنید
برای حذف یک فهرست:
- به بخش Cloud Firestore کنسول Firebase بروید.
- روی تب Indexes کلیک کنید.
- ماوس را روی فهرستی که میخواهید حذف کنید نگه دارید و از منوی زمینه حذف را انتخاب کنید.
- با کلیک بر روی حذف از هشدار، تأیید کنید که میخواهید آن را حذف کنید.
از Firebase CLI استفاده کنید
همچنین می توانید ایندکس ها را با Firebase CLI مستقر کنید. برای شروع، firebase init firestore
را در فهرست پروژه خود اجرا کنید. در طول راهاندازی، Firebase CLI یک فایل JSON با نمایههای پیشفرض در قالب درست تولید میکند. فایل را ویرایش کنید تا فهرست های بیشتری اضافه کنید و آن را با دستور firebase deploy
اجرا کنید. اگر فقط می خواهید ایندکس ها را مستقر کنید، پرچم --only firestore:indexes
را اضافه کنید. اگر با استفاده از کنسول Firebase، فهرستها را ویرایش میکنید، مطمئن شوید که فایل فهرستهای محلی خود را نیز بهروزرسانی کردهاید. به مرجع تعریف شاخص JSON مراجعه کنید.
زمان ساخت ایندکس
برای ساخت ایندکس، Cloud Firestore باید ایندکس را راهاندازی کند و سپس فهرست را با دادههای موجود پر کند. زمان ساخت ایندکس مجموع زمان راهاندازی و زمان تکمیل مجدد است:
تنظیم ایندکس چند دقیقه طول می کشد. حداقل زمان ساخت یک فهرست، حتی برای یک پایگاه داده خالی، چند دقیقه است.
زمان پر کردن به مقدار داده های موجود در فهرست جدید بستگی دارد. هر چه مقادیر فیلد بیشتر با تعریف ایندکس مطابقت داشته باشد، مدت بیشتری طول می کشد تا ایندکس پر شود.
ساخت های شاخص عملیات طولانی مدت هستند.
پس از شروع ساخت ایندکس، Cloud Firestore یک نام منحصر به فرد به عملیات اختصاص می دهد. نام عملیات با projects/[PROJECT_ID]/databases/(default)/operations/
پیشوند است، برای مثال:
projects/project-id/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg
با این حال، هنگام تعیین نام عملیات برای دستور describe
، می توانید پیشوند را کنار بگذارید.
فهرست کردن تمام عملیات طولانی مدت
برای فهرست کردن عملیات طولانی مدت، از دستور gcloud firestore عملیات لیست استفاده کنید . این دستور عملیات در حال انجام و اخیراً تکمیل شده را فهرست می کند. عملیات برای چند روز پس از اتمام فهرست شده است:
gcloud firestore operations list
وضعیت عملکرد را بررسی کنید
به جای فهرست کردن تمام عملیات طولانی مدت، می توانید جزئیات یک عملیات واحد را فهرست کنید:
gcloud firestore operations describe operation-name
تخمین زمان تکمیل
همانطور که عملیات شما اجرا می شود، مقدار فیلد state
را برای وضعیت کلی عملیات ببینید.
درخواست برای وضعیت یک عملیات طولانی مدت نیز معیارهای workEstimated
و workCompleted
را برمی گرداند. این معیارها برای تعداد اسناد برگردانده می شوند. workEstimated
تعداد کل تخمینی اسنادی را که یک عملیات پردازش خواهد کرد را نشان می دهد. workCompleted
تعداد اسناد پردازش شده را نشان می دهد. پس از اتمام عملیات، workCompleted
تعداد کل اسنادی را که واقعاً پردازش شدهاند را نشان میدهد که ممکن است با مقدار workEstimated
باشد.
تقسیم workCompleted
شده بر workEstimated
زده شده برای تخمین پیشرفت تقریبی. تخمین ممکن است نادرست باشد زیرا به تأخیر در جمع آوری آمار بستگی دارد.
به عنوان مثال، وضعیت پیشرفت یک نمایه سازی در اینجا آمده است:
{ "operations": [ { "name": "projects/project-id/operations/AyAyMDBiM2U5NTgwZDAtZGIyYi0zYjc0LTIzYWEtZjg1ZGdWFmZWQHEjF0c2Flc3UtcmV4ZWRuaS1uaW1kYRUKSBI", "metadata": { "@type": "type.googleapis.com/google.firestore.admin.v1.IndexOperationMetadata", "common": { "operationType": "CREATE_INDEX", "startTime": "2020-06-23T16:52:25.697539Z", "state": "PROCESSING" }, "progressDocuments": { "workCompleted": "219327", "workEstimated": "2198182" } }, }, ...
هنگامی که یک عملیات انجام می شود، شرح عملیات حاوی "done": true
. مقدار فیلد state
را برای نتیجه عملیات مشاهده کنید. اگر فیلد done
شده در پاسخ تنظیم نشده باشد، مقدار آن false
است. برای عملیات در حال انجام به وجود مقدار done
وابسته نباشید.
خطاهای ساختمانی شاخص
ممکن است هنگام مدیریت نمایه های ترکیبی و معافیت های فهرست تک فیلدی با خطاهای ایجاد نمایه مواجه شوید. اگر Cloud Firestore با مشکلی در دادههایی که فهرستسازی میکند مواجه شود، عملیات نمایهسازی ممکن است با شکست مواجه شود. معمولاً به این معنی است که شما به یک حد شاخص رسیده اید. به عنوان مثال، ممکن است این عملیات به حداکثر تعداد ورودی های فهرست در هر سند رسیده باشد.
اگر ایجاد فهرست ناموفق باشد، پیام خطا را در کنسول مشاهده می کنید. بعد از اینکه تأیید کردید که هیچ محدودیتی برای فهرست ندارید، دوباره عملیات فهرست خود را امتحان کنید.