我通过Azure门户"查询资源管理器"执行简单查询。
这是我的问题:
SELECT * FROM c
WHERE c.DataType = 'Fruit'
AND c.ExperimentIdentifier = 'prod'
AND c.Param = 'banana'
AND Contains(c.SampleDateTime, '20171029')
ORDER BY c.SampleDateTime DESC
然而,我得到例外:
按订单项要求在相应的索引路径上定义范围索引。
没有关于错误的帮助链接,我无法从错误消息中找到尾标。
这是什么意思,为什么我的查询失败了,我该如何解决?
P.S。 _ts
属性对我不利,因为我不想在插入记录时订购。
答案 0 :(得分:5)
ORDER BY直接从索引提供,因此它要求按项目排序为Range索引(而不是Hash索引)。
虽然你只能将order-by项目作为范围索引(对于数字和字符串),我的建议是将所有路径索引为范围,精度为-1。
基本上,您需要更新集合的索引策略,如下所示:
{
"automatic": true,
"indexingMode": "consistent",
"includedPaths": [
{
"path": "/",
"indexes": [
{ "kind": "Range", "dataType": "Number", "precision": -1 },
{ "kind": "Range", "dataType": "String", "precision": -1 }
]
}
]
}