Cloudant query error: missing search index when trying to sort

Cloudant query error: missing search index when trying to sort

我已经按照 IBM 的 Cloudant tutorial 了解如何 运行 查询来检索选定的文档,并根据字段的值对这些文档进行排序。说明从页面下方的 "Running a query with two fields".

开始。

我遇到一个错误,我找不到解决方案。

Unknown Error: mango_idx :: {no_usable_index,missing_sort_index}

查询是:

{
"selector": {
  "lastname": "Brown",
  "location": "New York City, NY"
},
"fields": [
  "firstname",
  "lastname",
  "location"
],
"sort": [
  {
    "lastname": "asc"
  },
  {
    "firstname": "asc"
  }
]
}

我在设计文档中添加了一个查询索引,如下所示:

{
"index": {
  "fields": [
    "lastname",  
    "location",
    "age"
  ]
},
"name": "query-index",
"type": "json"
}

文档本身是以下的变体:

{
"firstname": "John",
"lastname": "Brown",
"age": 21,
"location": "New York City, NY",
"_id": "doc2"
}

我是不是做错了什么?教程未更新的 Cloudant 语法是否发生了某些变化?

我知道 其中建议的答案对我没有帮助。

看起来这确实是该教程的一个问题。没有索引支持按姓氏和名字排序。您可以像这样创建另一个索引:

{
  "index": {
    "fields": [
      "lastname",
      "firstname"
    ]
  },
  "type": "json"
}

或者,您可以仅按姓氏排序(去掉名字)。这将得到原始索引的支持。查询将如下所示:

{
  "selector": {
    "lastname": "Brown",
    "location": "New York City, NY"
  },
  "fields": [
    "firstname",
    "lastname",
    "location"
  ],
  "sort": [
    {
      "lastname": "asc"
    }
  ]
}