Создание рек MongoDB для Elasticsearch

Хорошо, поэтому я искал всюду в Интернете для какой-то документации о том, как настроить MongoDB и Elasticsearch. Похоже, что в репозитории geisticub elasticearch есть река Mongodb, но нет документации. Кто-нибудь получил эти две прекрасные технологии для совместной работы?

Ответ 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)