Индексирование базы данных Mysql с помощью поиска elastics

Недавно я начал искать ElasticSearch для реализации поиска в моем выражение. У меня есть моя база данных в Mysql, которая имеет ок. > 2 млн. записей. Я знаю, что в sphinx мы могли бы создать индекс непосредственно на любом столбец таблицы mysql. Я хотел знать, возможно ли это в Elasticsearch, если не напрямую, как мы можем это реализовать?

Спасибо Мохит

Ответ 1

В настоящее время нет встроенной поддержки для mysql в Elastic Search, как в Sphinx.

Эластичный поиск - отличный вариант для поиска, но вам, вероятно, придется выполнить какую-то специальную работу, чтобы вызвать переиндексацию элементов при их изменении в вашей базе данных. Точно, как это будет достигнуто, это будет зависеть от вашего приложения. У Elastic Search есть отличная возможность поиска в режиме реального времени, и было доказано, что работает хорошо под нагрузкой с высоким индексированием, поэтому запуск переиндексации не должен беспокоить большинство приложения.

Движение NoSQL, похоже, набирает обороты. Некоторые приложения используют Elastic Search в качестве единственного хранилища данных.

Ответ 2

https://github.com/jprante/elasticsearch-river-jdbc делает это. Вы можете синхронизировать данные из источника mysql, используя "таблицу операций".

Это, сначала немного сложнее, но он работает.

Сначала вы должны установить плагин Во-вторых, вам нужно настроить (настроить) импортированные данные

Ответ 3

  • Что такое Logstash? Logstash - это механизм сбора данных в режиме реального времени возможности конвейерной обработки. Вы можете использовать Logstash для сбора журналов, проанализируйте их в желаемом формате и сохраните их для поиска или мониторинг для вашего приложения.

Шаг-1. Загрузите последнюю версию  эластичный поиск

Шаг-2: После загрузки logstasch необходимо установить плагин jdbc

bin/plugin install logstash-input-jdbc

Шаг 3: Загрузите драйвер mysql-jdbc... как я скачал, и файл  name - mysql-connector-java-5.1.36.jar. поместите этот файл внутрь  logstash/drivers/mysql-connector-java-5.1.36.jar.... вы можете поместить его  где угодно. но помните путь.

Шаг-4: Теперь создайте файл db.conf и поместите его в logstash  каталог... в моем случае logstash-2.3.2/logstash-jdbc.conf здесь  Содержание:

input {jdbc {jdbc_driver_library = > "/opt/logstash-2.3.2/drivers/mysql-connector-java-5.1.36.jar" jdbc_driver_class= > "com.mysql.jdbc.Driver" jdbc_connection_string = > "jdbc: mysql://localhost/myapp_development" jdbc_user = > "root" jdbc_password = > "admin" parameters = > { "user_list" = > "users" } schedule = > "* * * * *" statement = > "select имя пользователя, адрес электронной почты от пользователей" }} output {elasticsearch {index = > "users" document_type = > "users" document_id = > "% {123}" hosts = > "localhost: 9200" }}

Jdbc Input Параметр Описание

jdbc_driver_library Полный путь библиотеки jdbc jdbc_driver_class JDBC  класс драйвера для загрузки, для MySQL это com.mysql.jdbc.Driver  jdbc_connection_string JDBC строка подключения mysql jdbc_user MySQL  Пользовательский пароль пользователя jdbc_password  каждую минуту. Доступная инструкция о параметрах планирования. Оператор MySQL.  Параметры Параметр для передачи в инструкции MySQL

Параметры вывода Jdbc Описание

Параметр Описание
индекс Elasticsearch Название индекса  document_type Тип индекса Elasticsearch. document_id Идентификатор документа поиска эластичности


Шаг-5: Теперь настройка завершена. нам нужно запустить logstart. до этого начала elasicsearch

затем запустите logstsh и дайте ему файл jadbc-db.conf для конфигурации $ cd logstash-2.3.2 $bin/logstash agent -f logstash-jdbc.conf

Теперь быстро проверяйте свои данные в эластичном поиске  http://localhost:9200/users/users/_search

Спасибо Debs