Создание представления couchdb для индексации, если элемент в массиве существует - PullRequest
0 голосов
/ 30 мая 2019

У меня есть следующие образцы документов в моем couchdb.Исходная таблица в производстве содержит около 2 млн записей.

{ 
  {
      "_id": "someid|goes|here",
      "collected": {
          "tags": ["abc", "def", "ghi"]
      }
  },
  {
      "_id": "someid1|goes|here",
      "collected": {
           "tags": ["abc", "klm","pqr"]
      },
  },
  {
      "_id": "someid2|goes|here",
      "collected": {
           "tags": ["efg", "hij","klm"]
      },
  }
}

Исходя из моего предыдущего вопроса, как искать значения, когда селектор является массивом , у меня в настоящее время добавлен индексдля поля collected.tags, но поиск все еще занимает много времени.Вот поисковый запрос, который у меня есть.

{
  "selector": {
    "collected.tags": {
      "$elemMatch": {
        "$regex": "abc"
      }
    }
  }
}

Существует около 300 тыс. Записей, соответствующих вышеуказанному условию, поиск, похоже, занимает много времени.Итак, я хочу создать индексированное представление для быстрого поиска и поиска вместо поиска / поиска.Я новичок в couchdb и не знаю, как настроить функцию карты для создания индексированного представления.

1 Ответ

0 голосов
/ 30 мая 2019

Разобрался с функцией карты сам. Теперь все документы проиндексированы и поиск выполняется быстрее

function (doc) {
  if(doc.collected.tags.indexOf('abc') > -1){
    emit(doc._id, doc);
  }
}
...