How to write better graphql schemas?

I wrote this schema

User.name: string @index(exact) .
User.username: string @index(exact) .
User.bio: string .
User.age: int .
User.loc: geo @index(geo) .
User.dob: datetime .
User.tags: [string] .
User.connections: [uid] .
User.cluster: uid .

type User {
    User.name
    User.username
    User.bio
    User.age
	User.loc
	User.dob
    User.tags
	User.connections
    User.cluster
}

Cluster.name: string @index(exact) .
Cluster.bio: string .
Cluster.loc: geo @index(geo) .
Cluster.radius: int .
Cluster.participants: int .
Cluster.maxParticipants: int .
Cluster.softConnectRadius: int .
Cluster.connectRadius: int .
Cluster.premium: bool .
Cluster.entryCost: int .
Cluster.blockedUsers: [uid] .

type Cluster {
	Cluster.name
	Cluster.bio
	Cluster.loc
	Cluster.radius
	Cluster.participants
	Cluster.maxParticipants
	Cluster.softConnectRadius
	Cluster.connectRadius
	Cluster.premium
	Cluster.entryCost
	Cluster.blockedUsers
}

Running this query on this schema say Predicate loc is not indexed

`query users($a: string) {
		users(func: type(User)) @filter(near(loc, [1, 2], 100000000)) {
			uid
            name
            username
            bio
            loc
            dob
            tags
			cluster {
				name
				bio
				radius
				loc
			}
		}
	}`