Olha Shumeliuk
Olha Shumeliuk

Reputation: 740

Cosmos DB: range string index return query error

I'm trying to create custom index policy on CosmosDB documents collection for include only 1 field in index.

The index policy looks like :

new IndexingPolicy
{
    Automatic = true,
    IndexingMode = IndexingMode.Consistent,
    ExcludedPaths = new Collection<ExcludedPath>(new[]
    {
        new ExcludedPath { Path = "/*" }
    }),
    IncludedPaths = new Collection<IncludedPath>(new[]
    {
        new IncludedPath
        {
            Path = "/Id/?",
            Indexes = new Collection<Index>(new Index[] { new RangeIndex(DataType.String) {Precision = -1 } })
        }
    })
};

Then I do query on documents collection :

 CosmosClient.CreateDocumentQuery<Entity>(
    CollectionUri(docCollection),
    "SELECT x from x where x.Id != \"\" ",
    new FeedOptions
    {
        MaxItemCount = 100,
        RequestContinuation = null,
        EnableCrossPartitionQuery = false,
        PartitionKey = new PartitionKey("entities"),
    }).AsDocumentQuery();

Such request throws an error: An invalid query has been specified with filters against path(s) excluded from indexing. Consider adding allow scan header in the request.

While almost same one (check for equality instead of unequality) gives correct result.

Did I configure index policy wrong or I need to specify some additional args when querying? Thanks

Upvotes: 1

Views: 494

Answers (1)

Aravind Krishna R.
Aravind Krishna R.

Reputation: 8003

Your partition key path should also be included in the included paths. It's implicitly included as a filter because you're setting it in PartitionKey = new PartitionKey("entities").

Upvotes: 2

Related Questions