google-app-engine


Missing index on specific entities in app engine


I have entities in app engine which I query as:
foo = Foo.all().filter('bar =', baz).get()
#baz is unicode, bar is a StringProperty
#Foo inherits from db.Model
This works for most entities, but for some value of baz, no entity is returned, even though the entity certainly exists, as can be verified at https://console.cloud.google.com/datastore/entities/ The cause is that for that specific entity there is no index on it's value of bar, as evidenced by the lack of a checkmark in the 'Indexed' column at that web page.
The docs state that
Indexes for simple queries, such as queries over a single property, are created automatically
So I would have expected that all entities of that type would have an index on that property, but evidently that is incorrect. Questions:
Q1: when the index is created, is it added to entities that were put prior to the first time a query is run using that index? (or is the index created the first time any entity of that type is put?)
Q2: if not, what changes to the entity (if any) will cause the index to be added to that property? (i tried changing a property other than bar, and putting, and that did not cause the entity to be added)
Q3: would explicitly listing the index in index.yaml change this behavior?
Q4: is there a way to programatically determine whether an entity has an index on a specific property?
Q5: (bonus) is there any google documentation on the above?
thanks
Q1) The index for individual properties is created automatically created when you write the first entity that has that property (with indexed=true). However, whether or not a property is added to the index is an entity/property level attribute that is set when you write it.
Q2) Every property there is a flag that tells the back-end if it should index the property.If you read the entity and write it back down with the flag set to true on bar it will be inserted into the index.
Q3) index.yaml is only for composite indexes (multi-property indexes). Individual properties are controlled by a property-level flag when you write/update the entity and do not need to be pre-configured.
Q4) Only by reading back every entity and checking the index flag for the property in question.
Q5) For composite indexes you can read the Datastore Indexes. For property indexes, read the Entities, Properties, and Keys page down at the "Property and Value Types" section - you'll see lots about indexes there.
What's the length of the data you're storing? Documentation says:
Short strings (up to 1500 bytes) are indexed and can be used in query filter conditions and sort orders.
Long strings (up to 1 megabyte) are not indexed and cannot be used in query filters and sort orders.
More information on index creation in general here + its "related articles".

Related Links

No api proxy found for service “datastore_v4” in new GAE 1.8.4
Which Google App Engine installer do I want to use for Windows?
Using Access Token from google cloud to login to Gmail
GAE : Yahoo, Google & Facebook login support
Google App Engine : JDO deletePersistent not consistent
Objectify 4 throwing strange error in GAE
How can I use my Google API email #developer.gserviceaccount.com
How to log messages in GAE go runtime?
Error with PHP SDK (Windows)
Increase Per-User Limit for Google API: Saving not possible, always error message “Your input was invalid”
GWT: form post works only on the local server, not with the app engine
NoClassDefFoundError: com/google/api/client/util/Lists when setting up oauth2 on app engine
Objectify with Cloud Endpoints
Access extrenal db service from App engine
“Sample DB” for Google App Engine Datastore
What is the Entity Key for in the Datastore Viewer?

Categories

HOME
xml
fabricjs
microsoftgraph
paraview
cheerio
codenvy
twig
zend-framework
requirements
knitr
bitbucket-api
switch-statement
pyqt4
hugo
google-admin-sdk
missing-data
modal-dialog
barcode
datastage
endpoint
azure-iot-hub
atlassian-stash
red5
easyphp
smartclient
cfml
backpack-for-laravel
mongoid6
highstock
direct3d11
strongname
pic32
flooding
handler
paperjs
vex
winpe
boost-asio
recurring-events
quickfixj
laravel-eloquent
mailkit
z-notation
sim-card
opensmpp
mcustomscrollbar
preloader
wc
clang++
memory-mapping
double-click
hammer.js
launchctl
java-6
baidu
omxplayer
builtins
tinkerpop3
mongodb-php
i386
firebase-security
uiactionsheet
cortex-m
piracy-prevention
asyncdisplaykit
ess
rdflib
keyup
apache-spark-1.3
easyrtc
mintty
rcaller
ray
maven-scm
websphere-esb
scriptaculous
hidapi
rolify
asdf
scmmanager
node-blade
onload-event
cardreader
mysql-error-2013
virtual-pc
intersect
dopostback
sentestingkit
fusefabric
oracle-enterprise-linux
predicatebuilder
role
presentation-layer
duplex
feasibility
int64
business-model
cardspace

Resources

Encrypt Message