Básicamente, tengo una consulta de Firestore, y algunos de los campos de filtro pueden estar vacíos, en ese caso, se ignorará la consulta específica. Dado que las consultas de desigualdad con múltiples campos requieren índices, ¿cuál es la mejor manera de crear índices de dicha consulta sin tener que ir? a través de todas las combinaciones posibles.
por ejemplo, 'país' y 'presupuesto_alto', 'género' y 'presupuesto_alto', 'edad' y 'presupuesto_alto', 'país, género' y 'presupuesto_alto', etc.
Esta es mi consulta.
if (country !== "") query = query.where("country", "==", country); if (gender !== "") query = query.where("gender", "==", gender); if (age !== "") query = query.where("age", "==", age); if (religion !== "") query = query.where("religion", "==", religion); if (budget_high !== "") query = query.where("budget_high", "<=", Number(budget_high)); return query .get() .then((querySnapshot) => { var data = []; querySnapshot.forEach((doc) => { let user_data = doc.data(); user_data.created_at = `${user_data.created_at.toDate()}`; data.push(user_data); }); return data; }) .catch((error) => { console.log("Error getting documents: ", error); return []; }); }; Aquí están mis exenciones de campo único para la colección (no el grupo de colección) 
Primero, necesitamos un campo que estará presente en todas las consultas. Puede ordenar por uno de los campos para que siempre esté presente (presupuesto_alto en este caso, ya que está llamando a la consulta de desigualdad).
Así que crea 4 índices compuestos.
Esto manejará efectivamente sus combinaciones de consultas.
Lea los documentos del índice de fusión
Siguiendo con la respuesta de @Peter O., el orden de los campos en los índices es importante. Por favor intenta lo siguiente:
Espero que esto ayude.