Индекс недоступен на пространстве клавиш в couchbase - PullRequest
2 голосов
/ 17 января 2020

У меня есть база данных Couchbase с документами, например

{
  "_host": {
    "kind": "KIND1",
    "id": "ID1",
..
}

Я создал этот индекс:

CREATE INDEX `kind-id-index` ON `dev`(`_host.kind`,`_host.id`)

, но когда я использую этот запрос

@Query("#{#n1ql.selectEntity} where _host.kind=$1 and _host.id=$2 ")

Я получил эту ошибку:

No index available on keyspace dev_wk_state that matches your query.

1 Ответ

1 голос
/ 17 января 2020

Обратные галочки в неправильном месте. Индекс должен быть следующим:

CREATE INDEX `kind-id-index` ON `dev`(`_host`.`kind`,`_host`.`id`);

Поскольку в полях нет специальных символов, вы также можете опустить обратные галочки.

CREATE INDEX `kind-id-index` ON `dev`(_host.kind,_host.id);

FYI: _host is object, а kind is field (вложенный) в объекте. Вы ссылаетесь как _host.kind или `_host` .kind`. Если вы делаете `_host.kind`, он ищет поле" _host.kind ", а не подчиненный объект. Если вы хотите ссылаться на s1, вы должны использовать `f1.f2`.s1, потому что в поле есть точка, вы должны сделать` f1.f2`.s1

{
  "_host": {
    "kind": "KIND1",
    "id": "ID1"
     },
  "f1.f2": { "s1": 10}
}
...