There are many properties in my model that I currently don\'t need indexed but can imagine I might want indexed at some unknown point in the future. If I explicitly set
To index properties of existing entities (as per the documentation):
- Retrieve (get) the entity from the Datastore.
- Write (put) the entity back to the Datastore.
didn't work for me. I employed appengine-mapreduce
library and wrote a MapOnlyMapper
using DatastoreMutationPool
for indexing all the existing entities in Datastore.
Lets assume the property name
was unindexed and I want to index this in all the existing entities. What I had to do is:
@Override
public void map(Entity value) {
String property = "name";
Object existingValue = value.getProperty(property);
value.setIndexedProperty(property, existingValue);
datastoreMutationPool.put(value);
}
Essentially, you will have to set the property as indexed property using setIndexedProperty(prop, value)
and then save (put) the entity.
I know I am very late in posting an answer. I thought I could help someone who might be struggling with this problem.