Как индексировать (эластичный поиск) конкретную коллекцию определенной базы данных mongodb с помощью транспортера?

Я хочу индексировать только конкретную коллекцию mongodb в упругом поиске с помощью транспортера. Сервер Mongodb имеет несколько баз данных, имеющих несколько коллекций. Я не хочу индексировать всю базу данных.

0 ответов

Если вы хотите скопировать только документы из коллекции my_instance, используйте фильтр пространства имен в конвейере, т.е.

var source = mongodb({
    "uri": "mongodb://172.31.38.157:27017/STOREDB",
    "timeout": "30s",
    "read_preference": "Primary"
})

var sink = elasticsearch({
    "uri": "http://172.31.38.157:9200/INDEX_NAME" 
})

t.Source("source", source, "/^my_instance$").Save("sink", sink, "/.*/")

Кроме того, если вам нужны только определенные данные из выбранных коллекций, параметр collection_filters преобразуется в запрос mongodb. Закомментированный пример ниже будет включать только документы, в которых поле i имеет значение больше 10.

var source = mongodb({
  "uri": "mongodb://127.0.0.1:27017/test"
  // "timeout": "30s",
  // "tail": false,
  // "ssl": false,
  // "cacerts": ["/path/to/cert.pem"],
  // "wc": 1,
  // "fsync": false,
  // "bulk": false,
  // "collection_filters": "{\"foo\": {\"i\": {\"$gt\": 10}}}"
})
Другие вопросы по тегам