Тип облачного хранилища данных Google не может вернуть все записи при запросе с предложением WHERE (2–3 фильтра) с использованием Java API хранилища данных.

Мой тип хранилища данных индексируется по 5 столбцам.

Когда я запрашиваю вид с 3 индексированными фильтрами, используя API Java:

RunQueryRequest.Builder request = RunQueryRequest.newBuilder();
 request.setPartitionId(partitionId);
 GqlQuery gqlQuery= GqlQuery.newBuilder()
                     .setQueryString(query)
                     .setAllowLiterals(true)
                     .build();

 request.setGqlQuery(gqlQuery);
 return datastore.runQuery(request.build());

И получено с помощью:

runQueryResponse.getBatch().getEntityResultsList();

метод возвращает только 1-2 записи, но при запросе из пользовательского интерфейса тот же запрос дает более 1000 записей.

Используемые зависимости:

<dependency>
        <groupId>com.google.cloud.datastore</groupId>
        <artifactId>datastore-v1-protos</artifactId>
        <version>1.5.0</version>
    </dependency>
    <dependency>
        <groupId>com.google.cloud.datastore</groupId>
        <artifactId>datastore-v1-proto-client</artifactId>
        <version>1.6.0</version>
    </dependency>

Как мы можем решить эту проблему?


person Nitin S. Hadpe    schedule 28.02.2018    source источник
comment
Пожалуйста, предоставьте сам запрос.   -  person QuestionAndAnswer    schedule 02.03.2018
comment
Запрос : SELECT * FROM _Kind_ where _col1_="string" and _col2_=0 and _col3_="string" LIMIT 10000   -  person Nitin S. Hadpe    schedule 05.03.2018


Ответы (1)


решено путем добавления зависимости от последней версии API хранилища данных (5 марта 2018 г.)

<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-datastore</artifactId>
  <version>1.14.0</version>
</dependency>

И использовал его методы для создания объекта GQLQuery.

GqlQuery<Entity> gqlQuery = Query.newGqlQueryBuilder(Query.ResultType.ENTITY, query)
                     .setNamespace("nameSpace").setAllowLiteral(true).build();

передать его

datastore.run(gqlQuery)
person Nitin S. Hadpe    schedule 05.03.2018