Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Quản lý chỉ mục trong Cloud Firestore

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Cloud Firestore đảm bảo hiệu suất truy vấn bằng cách yêu cầu chỉ mục cho mọi truy vấn. Các chỉ mục cần thiết cho các truy vấn cơ bản nhất được tạo tự động cho bạn. Khi bạn sử dụng và kiểm tra ứng dụng của mình, Cloud Firestore tạo ra các thông báo lỗi giúp bạn tạo chỉ mục bổ sung mà ứng dụng của bạn yêu cầu. Trang này mô tả cách quản lý chỉ mục trường đơn và chỉ mục tổng hợp của bạn.

Tạo một chỉ mục bị thiếu thông qua một thông báo lỗi

Nếu bạn thử truy vấn ghép với mệnh đề phạm vi không ánh xạ tới chỉ mục hiện có, bạn sẽ nhận được lỗi. Thông báo lỗi bao gồm một liên kết trực tiếp để tạo chỉ mục bị thiếu trong bảng điều khiển Firebase.

Nhấp vào liên kết đã tạo tới bảng điều khiển Firebase, xem lại thông tin được điền tự động và nhấp vào Tạo .

Sử dụng bảng điều khiển Firebase

Để tạo chỉ mục mới theo cách thủ công từ bảng điều khiển Firebase:

hình ảnh của giao diện lập chỉ mục firestore trong bảng điều khiển firebase

  1. Chuyển đến phần Cloud Firestore của bảng điều khiển Firebase .
  2. Chuyển đến tab Chỉ mục và nhấp vào Thêm chỉ mục .
  3. Nhập tên bộ sưu tập và đặt các trường bạn muốn sắp xếp chỉ mục.
  4. Nhấp vào Tạo .

Các chỉ mục có thể mất vài phút để tạo, tùy thuộc vào kích thước của truy vấn. Sau khi tạo chúng, bạn có thể xem các chỉ mục của mình và trạng thái của chúng trong phần Chỉ mục tổng hợp. Nếu chúng vẫn đang xây dựng, bảng điều khiển Firebase sẽ bao gồm thanh trạng thái của tòa nhà.

Xóa chỉ mục

Để xóa một chỉ mục:

  1. Chuyển đến phần Cloud Firestore của bảng điều khiển Firebase .
  2. Nhấp vào tab Chỉ mục .
  3. Di chuột qua chỉ mục bạn muốn xóa và chọn Xóa từ menu ngữ cảnh.
  4. Xác nhận rằng bạn muốn xóa nó bằng cách nhấp vào Xóa khỏi cảnh báo.

Sử dụng Firebase CLI

Bạn cũng có thể triển khai các chỉ mục với Firebase CLI . Để bắt đầu, hãy chạy firebase init firestore trong thư mục dự án của bạn. Trong quá trình thiết lập, Firebase CLI tạo tệp JSON với các chỉ mục mặc định ở định dạng chính xác. Chỉnh sửa tệp để thêm nhiều chỉ mục hơn và triển khai nó bằng lệnh firebase deploy . Nếu bạn chỉ muốn triển khai các chỉ mục, hãy thêm cờ --only firestore:indexes . Nếu bạn thực hiện chỉnh sửa các chỉ mục bằng bảng điều khiển Firebase, hãy đảm bảo rằng bạn cũng cập nhật tệp chỉ mục cục bộ của mình. Tham khảo tài liệu tham khảo định nghĩa chỉ mục JSON .

Thời gian xây dựng chỉ mục

Để tạo chỉ mục, Cloud Firestore phải thiết lập chỉ mục và sau đó chèn lấp chỉ mục bằng dữ liệu hiện có. Thời gian tạo chỉ mục là tổng thời gian thiết lập và thời gian chèn lấp:

  • Việc thiết lập chỉ mục mất vài phút. Thời gian tạo chỉ mục tối thiểu là vài phút, ngay cả đối với cơ sở dữ liệu trống.

  • Thời gian lấp đầy phụ thuộc vào lượng dữ liệu hiện có thuộc về chỉ mục mới. Càng nhiều giá trị trường phù hợp với định nghĩa chỉ mục, thì càng mất nhiều thời gian để chèn lấp chỉ mục.

Xây dựng chỉ mục là hoạt động lâu dài .

Sau khi bạn bắt đầu xây dựng chỉ mục, Cloud Firestore sẽ gán cho hoạt động một tên duy nhất. Tên hoạt động được bắt đầu bằng projects/[PROJECT_ID]/databases/(default)/operations/ , ví dụ:

projects/project-id/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

Tuy nhiên, bạn có thể bỏ tiền tố khi chỉ định tên hoạt động cho lệnh describe .

Liệt kê tất cả các hoạt động lâu dài

Để liệt kê các hoạt động lâu dài, hãy sử dụng lệnh danh sách hoạt động của cửa hàng lửa gcloud . Lệnh này liệt kê các hoạt động đang diễn ra và đã hoàn thành gần đây. Các hoạt động được liệt kê trong vài ngày sau khi hoàn thành:

gcloud firestore operations list

Kiểm tra trạng thái hoạt động

Thay vì liệt kê tất cả các hoạt động lâu dài, bạn có thể liệt kê chi tiết của một hoạt động:

gcloud firestore operations describe operation-name

Ước tính thời gian hoàn thành

Khi hoạt động của bạn chạy, hãy xem giá trị của trường state cho trạng thái tổng thể của hoạt động.

Yêu cầu về trạng thái của một hoạt động lâu dài cũng trả về các chỉ số công việc workEstimatedworkCompleted . Các chỉ số này được trả về cho số lượng tài liệu. công việc workEstimated tính cho thấy tổng số tài liệu ước tính mà một hoạt động sẽ xử lý. workCompleted hiển thị số lượng tài liệu được xử lý cho đến nay. Sau khi hoạt động hoàn tất, workCompleted phản ánh tổng số tài liệu đã thực sự được xử lý, có thể khác với giá trị của công việc workEstimated .

Phân chia workCompleted theo workEstimated tính công việc để có ước tính tiến độ sơ bộ. Ước tính có thể không chính xác vì nó phụ thuộc vào việc thu thập số liệu thống kê bị trì hoãn.

Ví dụ, đây là trạng thái tiến độ của một bản xây dựng chỉ mục:

{
  "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"
        }
       },
    },
    ...

Khi một hoạt động được thực hiện, mô tả hoạt động sẽ chứa "done": true . Xem giá trị của trường state để biết kết quả của hoạt động. Nếu trường done không được đặt trong phản hồi, thì giá trị của nó là false . Không phụ thuộc vào sự tồn tại của giá trị done cho các hoạt động dở dang.

Lỗi xây dựng chỉ mục

Bạn có thể gặp phải lỗi xây dựng chỉ mục khi quản lý các chỉ mục tổng hợp và các trường hợp miễn trừ chỉ mục trường đơn. Thao tác lập chỉ mục có thể không thành công nếu Cloud Firestore gặp sự cố với dữ liệu mà nó đang lập chỉ mục. Thông thường nhất, điều này có nghĩa là bạn đã đạt đến giới hạn chỉ mục . Ví dụ: hoạt động có thể đã đạt đến số mục nhập chỉ mục tối đa trên mỗi tài liệu.

Nếu tạo chỉ mục không thành công, bạn sẽ thấy thông báo lỗi trong bảng điều khiển. Sau khi bạn xác minh rằng bạn không đạt đến bất kỳ giới hạn chỉ mục nào, hãy thử lại thao tác lập chỉ mục của bạn.