Meet industry peers, ask questions, collaborate to find answers, and connect with Googlers who are making the products you use every day.<\/p>", "imageupload.max_uploaded_images_per_upload" : 100, "imageupload.max_uploaded_images_per_user" : 10000, "integratedprofile.connect_mode" : "", "tkb.toc_maximum_heading_level" : "2", "tkb.toc_heading_list_style" : "disc", "sharedprofile.show_hovercard_score" : true, "config.search_before_post_scope" : "community", "tkb.toc_heading_indent" : "15", "p13n.cta.recommendations_feed_dismissal_timestamp" : -1, "imageupload.max_file_size" : 10024, "layout.show_batch_checkboxes" : false, "integratedprofile.cta_connect_slim_dismissal_timestamp" : -1 }, "isAnonymous" : true, "policies" : { "image-upload.process-and-remove-exif-metadata" : true }, "registered" : false, "emailRef" : "", "id" : -1, "login" : "Former Community Member" }, "Server" : { "communityPrefix" : "/qsqph94282", "nodeChangeTimeStamp" : 1732279606473, "tapestryPrefix" : "/gc", "deviceMode" : "DESKTOP", "responsiveDeviceMode" : "DESKTOP", "membershipChangeTimeStamp" : "0", "version" : "24.7", "branch" : "24.7-release", "showTextKeys" : false }, "Config" : { "phase" : "prod", "integratedprofile.cta.reprompt.delay" : 30, "profileplus.tracking" : { "profileplus.tracking.enable" : false, "profileplus.tracking.click.enable" : false, "profileplus.tracking.impression.enable" : false }, "app.revision" : "2409051714-s8dac8f1df8-b80", "navigation.manager.community.structure.limit" : "1000" }, "Activity" : { "Results" : [ ] }, "NodeContainer" : { "viewHref" : "https://www.googlecloudcommunity.com/gc/Cloud-Forums/ct-p/cloud-forums", "description" : "Get answers to your questions and share your knowledge about the Google Cloud.", "id" : "cloud-forums", "shortTitle" : "Cloud Forums", "title" : "Cloud Forums", "nodeType" : "category" }, "Page" : { "skins" : [ "googlecloud", "theme_hermes", "responsive_peak" ], "authUrls" : { "loginUrl" : "https://www.googlecloudcommunity.com/gc/user/userloginpage?dest_url=https%3A%2F%2Fwww.googlecloudcommunity.com%2Fgc%2FDatabases%2FFirestore-Indexes-Disappeared%2Fm-p%2F827776%2Fthread-id%2F3749", "loginUrlNotRegistered" : "https://www.googlecloudcommunity.com/gc/user/userloginpage?redirectreason=notregistered&dest_url=https%3A%2F%2Fwww.googlecloudcommunity.com%2Fgc%2FDatabases%2FFirestore-Indexes-Disappeared%2Fm-p%2F827776%2Fthread-id%2F3749", "loginUrlNotRegisteredDestTpl" : "https://www.googlecloudcommunity.com/gc/user/userloginpage?redirectreason=notregistered&dest_url=%7B%7BdestUrl%7D%7D" }, "name" : "ForumTopicPage", "rtl" : false, "object" : { "viewHref" : "/gc/Databases/Firestore-Indexes-Disappeared/td-p/827776", "subject" : "Firestore Indexes Disappeared", "id" : 827776, "page" : "ForumTopicPage", "type" : "Thread" } }, "WebTracking" : { "Activities" : { }, "path" : "Community:Google Cloud Community/Category:Google Cloud/Category:Cloud Forums/Board:Databases/Message:Firestore Indexes Disappeared" }, "Feedback" : { "targeted" : { } }, "Seo" : { "markerEscaping" : { "pathElement" : { "prefix" : "@", "match" : "^[0-9][0-9]$" }, "enabled" : false } }, "TopLevelNode" : { "viewHref" : "https://www.googlecloudcommunity.com/gc/Google-Cloud/ct-p/google-cloud", "description" : "Find answers, ask questions, and connect with our community of experts.", "id" : "google-cloud", "shortTitle" : "Google Cloud", "title" : "Google Cloud", "nodeType" : "category" }, "Community" : { "viewHref" : "https://www.googlecloudcommunity.com/", "integratedprofile.lang_code" : "en", "integratedprofile.country_code" : "US", "id" : "qsqph94282", "shortTitle" : "Google Cloud Community", "title" : "Google Cloud Community" }, "CoreNode" : { "conversationStyle" : "forum", "viewHref" : "https://www.googlecloudcommunity.com/gc/Databases/bd-p/cloud-database", "settings" : { }, "description" : "Find and share best practices about all things databases, including products like Cloud Spanner, Bigtable, Firestore, and more.", "id" : "cloud-database", "shortTitle" : "Databases", "title" : "Databases", "nodeType" : "Board", "ancestors" : [ { "viewHref" : "https://www.googlecloudcommunity.com/gc/Cloud-Forums/ct-p/cloud-forums", "description" : "Get answers to your questions and share your knowledge about the Google Cloud.", "id" : "cloud-forums", "shortTitle" : "Cloud Forums", "title" : "Cloud Forums", "nodeType" : "category" }, { "viewHref" : "https://www.googlecloudcommunity.com/gc/Google-Cloud/ct-p/google-cloud", "description" : "Find answers, ask questions, and connect with our community of experts.", "id" : "google-cloud", "shortTitle" : "Google Cloud", "title" : "Google Cloud", "nodeType" : "category" }, { "viewHref" : "https://www.googlecloudcommunity.com/", "description" : "The official home of Google Cloud and Workspace community forums, learning hub, and community blogs.", "id" : "qsqph94282", "shortTitle" : "Google Cloud Community", "title" : "Google Cloud Community", "nodeType" : "Community" } ] } }; LITHIUM.Components.RENDER_URL = "/gc/util/componentrenderpage/component-id/#{component-id}?render_behavior=raw"; LITHIUM.Components.ORIGINAL_PAGE_NAME = 'forums/v5/ForumTopicPage'; LITHIUM.Components.ORIGINAL_PAGE_ID = 'ForumTopicPage'; LITHIUM.Components.ORIGINAL_PAGE_CONTEXT = 'QsbDfATQUme_pkxFYC-E18FaofUlyxonHvM4qMFVwlTIrW7haqtZXYLmM94ysy6AnzFH7yBsSOuJn14imesEz1Olj4EtGUoGPjWtOlaMm-acsWqVwkYGvGGQHv3siHfMlM9zOzdiHZGrPmoBjD3clDJw_daNtsCTAM_8wVL5729EOO39N8D6CiWgm5emm6_KvDQH-YIljn2uu-9l1bLGmJycmrIhidLPOuAOjE-5NbQ-rcHozqtep1Ji-sSO9jK5E8-VwrRkpNuNsDqIHdUIxv4QXj4oWYvz66kLoYvYBDtuPN4eyZgenXcuAZq2gGPKMwFky1rv52joCg_vbl-QLzL1g5FeWrawDQu_uS2YCAxqW_c-6hxHd5G19dR65cAkgiQba8iGvUY1AaL7d3mqxw..'; LITHIUM.Css = { "BASE_DEFERRED_IMAGE" : "lia-deferred-image", "BASE_BUTTON" : "lia-button", "BASE_SPOILER_CONTAINER" : "lia-spoiler-container", "BASE_TABS_INACTIVE" : "lia-tabs-inactive", "BASE_TABS_ACTIVE" : "lia-tabs-active", "BASE_AJAX_REMOVE_HIGHLIGHT" : "lia-ajax-remove-highlight", "BASE_FEEDBACK_SCROLL_TO" : "lia-feedback-scroll-to", "BASE_FORM_FIELD_VALIDATING" : "lia-form-field-validating", "BASE_FORM_ERROR_TEXT" : "lia-form-error-text", "BASE_FEEDBACK_INLINE_ALERT" : "lia-panel-feedback-inline-alert", "BASE_BUTTON_OVERLAY" : "lia-button-overlay", "BASE_TABS_STANDARD" : "lia-tabs-standard", "BASE_AJAX_INDETERMINATE_LOADER_BAR" : "lia-ajax-indeterminate-loader-bar", "BASE_AJAX_SUCCESS_HIGHLIGHT" : "lia-ajax-success-highlight", "BASE_CONTENT" : "lia-content", "BASE_JS_HIDDEN" : "lia-js-hidden", "BASE_AJAX_LOADER_CONTENT_OVERLAY" : "lia-ajax-loader-content-overlay", "BASE_FORM_FIELD_SUCCESS" : "lia-form-field-success", "BASE_FORM_WARNING_TEXT" : "lia-form-warning-text", "BASE_FORM_FIELDSET_CONTENT_WRAPPER" : "lia-form-fieldset-content-wrapper", "BASE_AJAX_LOADER_OVERLAY_TYPE" : "lia-ajax-overlay-loader", "BASE_FORM_FIELD_ERROR" : "lia-form-field-error", "BASE_SPOILER_CONTENT" : "lia-spoiler-content", "BASE_FORM_SUBMITTING" : "lia-form-submitting", "BASE_EFFECT_HIGHLIGHT_START" : "lia-effect-highlight-start", "BASE_FORM_FIELD_ERROR_NO_FOCUS" : "lia-form-field-error-no-focus", "BASE_EFFECT_HIGHLIGHT_END" : "lia-effect-highlight-end", "BASE_SPOILER_LINK" : "lia-spoiler-link", "BASE_DISABLED" : "lia-link-disabled", "FACEBOOK_LOGOUT" : "lia-component-users-action-logout", "FACEBOOK_SWITCH_USER" : "lia-component-admin-action-switch-user", "BASE_FORM_FIELD_WARNING" : "lia-form-field-warning", "BASE_AJAX_LOADER_FEEDBACK" : "lia-ajax-loader-feedback", "BASE_AJAX_LOADER_OVERLAY" : "lia-ajax-loader-overlay", "BASE_LAZY_LOAD" : "lia-lazy-load" }; LITHIUM.noConflict = true; LITHIUM.useCheckOnline = false; LITHIUM.RenderedScripts = [ "jquery.lithium-selector-extensions.js", "jquery.position-toggle-1.0.js", "plugin.js", "jquery.tokeninput-1.6.2.js", "plugin.js", "plugin.js", "plugin.js", "jquery.delayToggle-1.0.js", "AjaxSupport.js", "InlineMessageReplyEditor.js", "jquery.hoverIntent-r6.js", "jquery.autocomplete.js", "en.js", "en.js", "jquery.ui.resizable.js", "KeepSessionAlive.js", "plugin.js", "jquery.iframe-transport.js", "Tooltip.js", "PartialRenderProxy.js", "LazyLoadComponent.js", "ElementQueries.js", "Placeholder.js", "plugin.js", "jquery.ui.mouse.js", "ForceLithiumJQuery.js", "plugin.js", "en.js", "Video.js", "plugin.js", "jquery.tmpl-1.1.1.js", "LiModernizr.js", "UserListActual.js", "DropDownMenuVisibilityHandler.js", "plugin.js", "OoyalaPlayer.js", "AjaxFeedback.js", "PolyfillsAll.js", "SearchAutoCompleteToggle.js", "AutoComplete.js", "DeferredImages.js", "HelpIcon.js", "en.js", "plugin.js", "jquery.effects.core.js", "DropDownMenu.js", "CustomEvent.js", "Auth.js", "ResizeSensor.js", "en.js", "json2.js", "jquery.function-utils-1.0.js", "Events.js", "theme.js", "plugin.js", "jquery.appear-1.1.1.js", "aws-sdk.js", "jquery.clone-position-1.0.js", "en.js", "jquery.ui.position.js", "jquery.tools.tooltip-1.2.6.js", "tinymce-patched.js", "MessageViewDisplay.js", "jquery.json-2.6.0.js", "plugin.js", "SearchForm.js", "plugin.js", "Components.js", "jquery.ajax-cache-response-1.0.js", "EarlyEventCapture.js", "en.js", "jquery.ui.draggable.js", "jquery.lithium-toastmessage.js", "Text.js", "NoConflict.js", "jquery.placeholder-2.0.7.js", "plugin.js", "InputEditForm.js", "plugin.js", "jquery.ui.widget.js", "plugin.js", "plugin.js", "BlockEvents.js", "Lithium.js", "FieldSet.js", "jquery.iframe-shim-1.0.js", "Dialog.js", "en.js", "plugin.js", "TinyMceEditor.js", "plugin.js", "TokenInputAutoComplete.js", "Namespace.js", "jquery.blockui.js", "Link.js", "Forms.js", "jquery.ui.dialog.js", "InlineMessageReplyContainer.js", "Sandbox.js", "InformationBox.js", "Loader.js", "plugin.js", "DataHandler.js", "CookieBannerAlert.js", "jquery.scrollTo.js", "plugin.js", "ElementMethods.js", "ProductsField.js", "brightcove_uploader.js", "ThreadedDetailMessageList.js", "ReCaptchaV3.js", "api.js", "jquery.js", "en.js", "ActiveCast3.js", "jquery.viewport-1.0.js", "jquery.ui.core.js", "prism.js", "jquery.fileupload.js", "plugin.js", "jquery.css-data-1.0.js", "Throttle.js", "MessageEditor.js", "InlineMessageEditor.js", "jquery.effects.slide.js", "SpoilerToggle.js", "Globals.js", "Cache.js", "en.js", "MessageBodyDisplay.js", "plugin.js" ];(function(){LITHIUM.AngularSupport=function(){function g(a,c){a=a||{};for(var b in c)"[object object]"===Object.prototype.toString.call(c[b])?a[b]=g(a[b],c[b]):a[b]=c[b];return a}var d,f,b={coreModule:"li.community",coreModuleDeps:[],noConflict:!0,bootstrapElementSelector:".lia-page .min-width .lia-content",bootstrapApp:!0,debugEnabled:!1,useCsp:!0,useNg2:!1},k=function(){var a;return function(b){a||(a=document.createElement("a"));a.href=b;return a.href}}();LITHIUM.Angular={};return{preventGlobals:LITHIUM.Globals.preventGlobals, restoreGlobals:LITHIUM.Globals.restoreGlobals,init:function(){var a=[],c=document.querySelector(b.bootstrapElementSelector);a.push(b.coreModule);b.customerModules&&0

Get hands-on experience with 20+ free Google Cloud products and $300 in free credit for new customers.

Firestore Indexes Disappeared

We have two environments: staging and production.

I recently deployed to our staging server, and got some errors, 'The query requires an index'. This I fixed by following the link it provides. Because I knew we'd be deploying the same code to production later too, I adjusted the link which took me to add the same keys to production as well. This *appeared* to work...

...until I just deployed production yesterday, and now I'm getting the same errors. After reviewing the database, the indexes were deleted.

Why would they have been deleted?

EDIT:

Worse than this, the indexes on the staging Firestore were also deleted, and now I'm getting the same errors on staging too. Is there a way to make indexes permanent? Or does Firestore require users to add them every few days..?

Solved Solved
0 1 38
1 ACCEPTED SOLUTION

It appears that our setup deploys firestore.indexes.json, which in our case has been empty (I didn't realize what this was or how it worked, esp. since the index error messages so helpfully guide users to add indexes to the *cloud* Firestore database directly, NOT to this file.)

I've now disabled deployment of this file (by removing the "firestore.indexes.json" reference from the firebase.json file).

View solution in original post

1 REPLY 1

It appears that our setup deploys firestore.indexes.json, which in our case has been empty (I didn't realize what this was or how it worked, esp. since the index error messages so helpfully guide users to add indexes to the *cloud* Firestore database directly, NOT to this file.)

I've now disabled deployment of this file (by removing the "firestore.indexes.json" reference from the firebase.json file).