Cloudant error error: отсутствует поисковый индекс при попытке сортировки

Я следовал учебному руководству Cloudant от IBM о том, как выполнить запрос, чтобы получить выборку документов и отсортировать их по значению поля. Инструкции начинаются примерно на 2/3 пути вниз по странице "Выполнение запроса с двумя полями".

Я получаю ошибку, для которой не могу найти решение.

Неизвестная ошибка: 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, о котором учебник не обновлялся?

Мне известно о "Неизвестной ошибке: mango_idx:: {no_usable_index,missing_sort_index}"}, из-за которой предлагаемые ответы мне не помогают.

1 ответ

Решение

Похоже, что это проблема с этим учебником. Нет индекса для поддержки сортировки по фамилии и имени. Вы можете создать еще один индекс, например:

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

В качестве альтернативы вы можете сортировать только по фамилии (убрать имя). Это будет поддерживаться исходным индексом. Запрос будет выглядеть так:

{
  "selector": {
    "lastname": "Brown",
    "location": "New York City, NY"
  },
  "fields": [
    "firstname",
    "lastname",
    "location"
  ],
  "sort": [
    {
      "lastname": "asc"
    }
  ]
}
Другие вопросы по тегам