Получить документы из Cosmosdb Java Запрос на кросс-секцию требуется, но отключен

public static Document getDocumentById(String id) {

  FeedOptions queryOptions = new FeedOptions();
     queryOptions.setMaxItemCount(10);
     queryOptions.setEnableCrossPartitionQuery(true);

  // Retrieve the document using the DocumentClient.
  List<Document> documentList = documentClient
        .queryDocuments(getTodoCollection().getSelfLink(),
              "SELECT * FROM c WHERE c.id='" + id + "'",null,queryOptions)
        .getQueryIterable().toList();

  if (documentList.size() > 0) {
     return documentList.get(0);
  } else {
     return null;
  }

Здравствуйте, я пытаюсь получить помощь с извлечением документа из Cosmosdb с использованием Java, используя приведенный выше код. Я получаю следующую ошибку:

ВНИМАНИЕ! Повторная попытка операции НЕ выполняется. Исключение: запрос между разделами требуется, но отключен. Установите для x-ms-documentdb-query-enablecrosspartition значение true, укажите x-ms-documentdb-partitionkey или измените свой запрос, чтобы избежать этого исключения. ActivityId: 09c62e77-f9dc-4cc7-902d-0cd8c5cad8a6, Microsoft.Azure.Documents.Common / 2.2.0.0

Любая помощь, которую вы можете мне предоставить, будет оценена! Спасибо


person mshah49rs    schedule 12.03.2019    source источник


Ответы (1)


Выполнялся поиск перегрузок метода queryDocuments из Документ DB Java SDK API Document, он немного отличается от вашего примера кода. Я полагаю, вы установили FeedOptions в неправильном порядке параметров. Пожалуйста, используйте приведенный ниже код, и он работает для меня.

import com.microsoft.azure.documentdb.*;

import java.util.List;

public class QueryDocumentsTest {

    static private String YOUR_COSMOS_DB_ENDPOINT = "https://***.documents.azure.com:443/";
    static private String YOUR_COSMOS_DB_MASTER_KEY="***";

    public static void main(String[] args) {

        DocumentClient client = new DocumentClient(
                YOUR_COSMOS_DB_ENDPOINT,
                YOUR_COSMOS_DB_MASTER_KEY,
                new ConnectionPolicy(),
                ConsistencyLevel.Session);

        FeedOptions queryOptions = new FeedOptions();
//        queryOptions.setMaxItemCount(10);
        queryOptions.setEnableCrossPartitionQuery(true);
        String id = "b01cf483-15e0-517c-deae-2e71bafe7d12";

        // Retrieve the document using the DocumentClient.
        List<Document> documentList = client
                .queryDocuments("dbs/db/colls/part",
                        "SELECT * FROM c WHERE c.id='" + id + "'",queryOptions)
                .getQueryIterable().toList();

        if (documentList.size() > 0) {
            System.out.println(documentList.get(0));
        } else {
            System.out.println("null");
        }

    }
}

Выход:

введите здесь описание изображения

person Jay Gong    schedule 13.03.2019
comment
Спасибо, я обнаружил свою проблему. Мне нужно, чтобы моя библиотека была установлена ​​на последнюю версию на maven, чтобы там были правильные параметры запроса. - person mshah49rs; 13.03.2019