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"
}
]
}