Хорошо, поэтому я искал всюду в Интернете для какой-то документации о том, как настроить MongoDB и Elasticsearch. Похоже, что в репозитории geisticub elasticearch есть река Mongodb, но нет документации. Кто-нибудь получил эти две прекрасные технологии для совместной работы?
Создание рек MongoDB для Elasticsearch
Ответ 1
Это довольно старый вопрос, но я просто отправлю свой ответ, если другие задаются вопросом по тому же вопросу, особенно с появлением новых версий ES. Мне потребовалось некоторое время, чтобы заставить ES работать с MongoDB тоже.
-
Во-первых, я предполагаю, что у вас установлены ES и MongoDB. Убедитесь, что вы включили oplogs, если вы не используете наборы реплик. Обратитесь здесь о том, как это сделать.
-
У плагина реки есть зависимость (elasticsearch-mapper-attachments), поэтому ЗАДАЙТЕ, что вы устанавливаете это сначала, чтобы предотвратить какие-либо проблемы позже. Этот wiki содержит необходимые команды, необходимые для установки плагинов. Обратите внимание на альтернативную ссылку для загрузки плагина реки, если вы используете ES 0.20.2 и выше.
-
Перезагрузите ES.
-
Используйте следующую команду для включения индексации:
curl -XPUT 'http://localhost:9200/_river/mongodb/_meta' -d ' { "type": "mongodb", "mongodb": { "db": "your-database-name", "collection": "your-collection-name" }, "index": { "name": "mongoindex", "type": "your-type" } }'
-
Чтобы выполнить поиск, используйте
curl -XGET 'http://localhost:9200/mongoindex/_search?q=field:value'
Я получил большую часть своей информации с этого веб-сайта, но я чувствовал, что ее можно упростить, следовательно, мой собственный подход.
Ответ 2
Он работает в определенных конфигурациях. Версии плагина elasticsearch river и mongodb могут быть необходимы для работы всей системы.
Ниже приведены шаги по воспроизведению рабочей среды
1) используйте версию elasticsearch 1.2.4. Пакет для ubuntu находится здесь: https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.2.4.deb
установите его с помощью dpkg -i /path/to/elasticsearch-1.2.4.deb
2) установите плагин реки и его зависимости:
cd /usr/share/elasticsearch && bin/plugin --install elasticsearch/elasticsearch-mapper-attachments/1.9.0
cd /usr/share/elasticsearch && bin/plugin --install com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/2.0.1
Доступны более новые версии плагина mapper atachments, но официальная вики плагина реки монго предлагает использовать 1.9.0.
3) MongoDB v2.4.9 уверенно работает с плагином реставрации elasticsearch.
убедитесь, что mongod запущен с помощью --replSet rs0
или у вас есть replSet=rs0
в mongod.conf
Затем вы должны быть уверены, что набор реплик инициирован в mongodb:
Войдите в консоль mongo:
mongo
Затем введите:
rs.initiate()
rs.status()
4) Подготовка была сделана, теперь вам нужно запустить плагин elasticsearch river. Предполагая, что у вас есть elasticsearch работает на localhost: 9200 и mongodb на 10.0.2.15:27017
curl -XPUT "localhost:9200/_river/feed/_meta" -d"
{
\"type\": \"mongodb\",
\"mongodb\": {
\"servers\": [
{\"host\": \"10.0.2.15", \"port\": 27017}
],
\"db\": \"YOUR_DB\",
\"collection\": \"YOUR_COLLECTION\"
},
\"index\": {
\"name\": \"YOUR_ELASTIC_INDEX\",
\"type\": \"item\"
}
}"
5) проверьте rs.config() на сервере mongo. Он должен содержать разрешимые имена хостов или ips для членов набора реплик, с которыми можно связаться с помощью плагина рек mongodb. Плагин реставрации Elasticsearch подключается к хосту, указанному в конфигурациях mongodb.servers и fetch replica. Затем он попытается подключиться к основному узлу реплики, заданной именем хоста, указанным в rs.config(). Если вы собираетесь использовать контейнеры докеров, чтобы соединиться с monogdb и elasticsearch через речной плагин, чем проблема.
Вы можете обновить конфигурацию rs, выполнив следующие действия:
mongo
а затем в оболочке mongo
cfg = rs.config()
cfg.members[0].host = "12.34.56.78:27017"
rs.reconfig(cfg)