Я просмотрел множество блогов и сайтов о настройке Elasticsearch для MongoDB для индексирования коллекций в MongoDB, но ни один из них не был простым.
Пожалуйста, объясните мне пошаговый процесс установки упругого поиска, который должен включать:
- конфигурация
- запустить в браузере
Я использую Node.js с express.js, поэтому, пожалуйста, помогите соответственно.
mongodb
elasticsearch
Бибин Дэвид
источник
источник
Ответы:
Этого ответа должно быть достаточно, чтобы настроить вас на выполнение этого руководства по созданию функционального компонента поиска с MongoDB, Elasticsearch и AngularJS .
Если вы хотите использовать фасетный поиск с данными из API, то вам стоит взглянуть на BthWatch Repo от Matthiasn .
Итак, вот как можно настроить «кластер» Elasticsearch с одним узлом для индексации MongoDB для использования в приложении NodeJS, Express на свежем экземпляре EC2 Ubuntu 14.04.
Убедитесь, что все в курсе.
Установите NodeJS.
Установите MongoDB - эти шаги прямо из документации MongoDB. Выберите любую версию, с которой вам удобно. Я придерживаюсь v2.4.9, потому что это, кажется, самая последняя версия MongoDB-River поддерживает без проблем.
Импортируйте открытый ключ GPG MongoDB.
Обновите свой список источников.
Получите пакет 10gen.
Затем выберите свою версию, если вы не хотите самую последнюю. Если вы настраиваете свою среду на компьютере с Windows 7 или 8, держитесь подальше от v2.6, пока они не исправят некоторые ошибки при запуске его как службы.
Не допускайте увеличения версии вашей установки MongoDB при обновлении.
Запустите сервис MongoDB.
По умолчанию для файлов базы данных используется / var / lib / mongo, а для файлов журнала - / var / log / mongo.
Создайте базу данных через оболочку mongo и вставьте в нее несколько фиктивных данных.
Теперь, чтобы преобразовать автономный MongoDB в набор реплик .
Сначала завершите процесс.
Теперь мы запускаем MongoDB как службу, поэтому мы не передаем опцию «--replSet rs0» в аргументе командной строки при перезапуске процесса mongod. Вместо этого мы помещаем его в файл mongod.conf.
Добавьте эти строки, заменяя ваши пути базы данных и журнала.
Теперь снова откройте оболочку mongo, чтобы инициализировать набор реплик.
Теперь установите Elasticsearch. Я просто следую за этим полезным Gist .
Убедитесь, что Java установлена.
Оставайтесь с v1.1.x пока пока исправление плагина Mongo-River не будет исправлено в v1.2.1.
Убедитесь, что в /etc/elasticsearch/elasticsearch.yml включены следующие параметры конфигурации, если вы сейчас разрабатываете только один узел:
Запустите сервис Elasticsearch.
Убедитесь, что это работает.
Если вы видите что-то подобное, значит, у вас все хорошо.
Теперь установите плагины Elasticsearch, чтобы он мог играть с MongoDB.
Эти два плагина не нужны, но они хороши для тестирования запросов и визуализации изменений в ваших индексах.
Перезапустите Elasticsearch.
Наконец, индексировать коллекцию из MongoDB.
Проверьте, что ваш индекс находится в Elasticsearch
Проверьте состояние вашего кластера.
Это вероятно желтый с некоторыми неназначенными осколками. Мы должны сказать Elasticsearch, с чем мы хотим работать.
Проверьте работоспособность кластера еще раз. Теперь он должен быть зеленым.
Иди играй.
источник
Использование реки может представлять проблемы, когда ваша деятельность расширяется. Река будет использовать тонну памяти, когда под тяжелой работой. Я рекомендую реализовать ваши собственные моделиasticsearch, или, если вы используете mongoose, вы можете встроить свои моделиasticsearch прямо в это или использовать mongoosastic, который, по сути, делает это для вас.
Другой недостаток реки Монгодб заключается в том, что вы застряли, используя ветку mongodb 2.4.x и ElasticSearch 0.90.x. Вы начнете обнаруживать, что вам не хватает многих действительно приятных функций, и проект mongodb river просто не производит достаточно полезный продукт, чтобы оставаться стабильным. Это сказало, что Река Монгодб определенно не то, с чем я пошел бы в производство Это создает больше проблем, чем стоит. Он будет случайным образом отбрасывать запись при большой нагрузке, он будет занимать много памяти, и нет никаких ограничений для этого. Кроме того, река не обновляется в реальном времени, она читает оплоги из mongodb, и это может задержать обновления на 5 минут, насколько я знаю.
Недавно нам пришлось переписывать большую часть нашего проекта, потому что еженедельно случается, что с ElasticSearch что-то не так. Мы даже зашли так далеко, что наняли консультанта Dev Ops, который также согласен с тем, что лучше всего уйти от River.
ОБНОВИТЬ: Elasticsearch-mongodb-river теперь поддерживает ES v1.4.0 и mongodb v2.6.x. Тем не менее, вы все равно, вероятно, столкнетесь с проблемами производительности при тяжелых операциях вставки / обновления, так как этот плагин будет пытаться читать оплоги mongodb для синхронизации. Если после разблокировки блокировки (или, скорее, защелки) много операций, вы заметите чрезвычайно высокое использование памяти на вашем сервереasticsearch. Если вы планируете провести большую операцию, река не является хорошим вариантом. Разработчики ElasticSearch по-прежнему рекомендуют вам управлять своими собственными индексами, напрямую связываясь с их API с использованием клиентской библиотеки для вашего языка, а не с помощью river. Это не совсем цель реки. Твиттер-река - отличный пример того, как использовать реку. По сути, это отличный способ получения данных из внешних источников,
Также учтите, что версия mongodb отстает в версии, так как она не поддерживается организацией ElasticSearch, а поддерживается третьей стороной. Разработка застряла в ветке v0.90 на долгое время после выпуска v1.0, и когда была выпущена версия для v1.0, она не была стабильной до тех пор, покаasticsearch не выпустил v1.3.0. Версии Mongodb также отстают. Вы можете оказаться в затруднительном положении, когда хотите перейти к более поздней версии каждой из них, особенно с ElasticSearch в условиях такой интенсивной разработки, с множеством ожидаемых функций. Следить за последними обновлениями ElasticSearch было очень важно, так как мы постоянно полагаемся на постоянное улучшение наших функций поиска, которые являются основной частью нашего продукта.
В целом вы, вероятно, получите лучший продукт, если сделаете это сами. Это не так сложно. Это просто еще одна база данных для управления в вашем коде, и ее можно легко перенести в существующие модели без значительного рефакторинга.
источник
not_analyzed
, в противном случае у вас возникнут проблемы с его запросом, чтобы способ, которым анализируемые поля были токенизированы.Я нашел полезный монго-разъем. Он создан в Mongo Labs (MongoDB Inc.) и теперь может использоваться с Elasticsearch 2.x
Менеджер документов Elastic 2.x: https://github.com/mongodb-labs/elastic2-doc-manager
mongo-connector создает конвейер от кластера MongoDB к одной или нескольким целевым системам, таким как Solr, Elasticsearch или другой кластер MongoDB. Он синхронизирует данные в MongoDB с целью, а затем подключает оплог MongoDB, следя за операциями в MongoDB в режиме реального времени. Он был протестирован с Python 2.6, 2.7 и 3.3+. Подробная документация доступна в вики.
https://github.com/mongodb-labs/mongo-connector https://github.com/mongodb-labs/mongo-connector/wiki/Usage%20with%20ElasticSearch
источник
River - хорошее решение, если вы хотите иметь синхронизацию в реальном времени и общее решение.
Если у вас уже есть данные в MongoDB и вы хотите очень легко отправить их в Elasticsearch, например «one-shot», вы можете попробовать мой пакет в Node.js https://github.com/itemsapi/elasticbulk .
Он использует потоки Node.js, так что вы можете импортировать данные из всего, что поддерживает потоки (например, MongoDB, PostgreSQL, MySQL, JSON-файлы и т. Д.)
Пример для MongoDB для Elasticsearch:
Установить пакеты:
Создайте скрипт, т.е. script.js:
Отправьте ваши данные:
Это не очень быстро, но работает на миллионы записей (благодаря потокам).
источник
Вот как это сделать на mongodb 3.0. Я использовал этот хороший блог
Тест на браузере:
HTTP: // локальный: 9200 / _search д = дом
источник
Здесь я нашел еще один хороший вариант для переноса ваших данных MongoDB в Elasticsearch. Демон go, который синхронизирует mongodb сasticsearch в реальном времени. Это чудовище. Его можно найти по адресу: Monstache
Ниже начальной настройки для настройки и использования.
Шаг 1:
Шаг 2 :
Шаг 3: Проверьте репликацию.
Шаг 4. Загрузите « https://github.com/rwynn/monstache/releases ». Разархивируйте загрузку и настройте переменную PATH, указав путь к папке для вашей платформы. Перейти к CMD и введите
"monstache -v"
Перейдите # 4.13.1 Monstache использует формат TOML для своей конфигурации. Настройте файл для миграции с именем config.tomlШаг 5
Мой config.toml ->
Шаг 6
источник
Поскольку mongo-connector теперь кажется мертвым, моя компания решила создать инструмент для использования потоков изменений Mongo для вывода в Elasticsearch.
Наши первые результаты выглядят многообещающими. Вы можете проверить это в https://github.com/electionsexperts/mongo-stream . Мы все еще находимся на ранней стадии разработки и будем рады предложениям или предложениям.
источник