#google-cloud-datastore
#google-cloud-datastore
Вопрос:
В настоящее время я провожу некоторые тесты в хранилище данных Google, но у меня проблема с моими запросами.
Если я верю в документацию https://cloud.google.com/datastore/docs/concepts/queries мы можем реализовать фильтр по нескольким столбцам с помощью инструкции EQUALS.
Но при тестировании я получаю сообщение об ошибке от API. Во время поиска в github хранилища данных я нашел эту ссылку: https://github.com/GoogleCloudPlatform/google-cloud-dotnet/issues/304 что соответствует моей проблеме, за исключением того, что в моем случае запрос должен выглядеть хорошо.
Вот отправленный запрос:
{
{
"kind": [{
"name": "talk.message"
}],
"filter": {
"compositeFilter": {
"op": "AND",
"filters": [{
"propertyFilter": {
"property": {
"name": "Conversation"
},
"op": "EQUAL",
"value": {
"stringValue": "2f16c14f6939464ea687d316438ad4cb"
}
}
},
{
"propertyFilter": {
"property": {
"name": "CreatedOn"
},
"op": "LESS_THAN_OR_EQUAL",
"value": {
"timestampValue": "2019-03-15T10:43:31.474166300Z"
}
}
},
{
"propertyFilter": {
"property": {
"name": "CreatedOn"
},
"op": "GREATER_THAN_OR_EQUAL",
"value": {
"timestampValue": "2019-03-14T10:43:31.474175100Z"
}
}
}
]
}
}
}
}
И вот ответ от API:
{Grpc.Core.RpcException: Status(
StatusCode=FailedPrecondition,
Detail="no matching index found. recommended index is:
- kind: talk.message
properties:
- name: Conversation
- name: CreatedOn"
)
Согласно документации, это должно быть хорошо… но это не так!
Чего мне не хватает?
Ответ №1:
Ваш запрос включает как фильтр РАВНЫХ (при разговоре), так и фильтр не РАВНЫХ (при создании), поэтому для выполнения запроса вам нужен составной индекс. Итак, ваш запрос действителен, но для выполнения запроса необходим составной индекс.
Комментарии:
1. Привет, Джим, спасибо за твой ответ. Я взгляну на составной индекс.