使用elasticsearch索引Mysql数据库

时间:2011-12-23 07:02:06

标签: search elasticsearch

我最近开始寻找ElasticSearch来实现我的搜索 应用。我在Mysql中有我的数据库,大约有。 > 2分钟 记录。我知道在sphinx中我们可以直接在任何上创建一个索引 mysql表列。我想知道它是否可能在Elasticsearch中, 如果不是直接我们如何实现它?

由于 莫希特

4 个答案:

答案 0 :(得分:4)

在Slasticx中,弹性搜索中的mysql没有本地支持(此时)。

弹性搜索是一个很好的搜索选项,但您可能需要做一些自定义工作,以便在项目更改时触发重新编制索引。具体如何实现将取决于您的应用程序。弹性搜索具有很好的近实时搜索功能,并且已被证明perform well under heavy indexing load,因此触发重建索引不应成为大多数应用程序的关注点。

NoSQL movement似乎也在增加动力。 Some applications使用Elastic Search作为唯一的数据存储。

答案 1 :(得分:4)

https://github.com/jprante/elasticsearch-river-jdbc这样做。您可以使用“操作表”同步来自mysql源的数据。

首次安装时有点棘手,但它确实有效。

首先你必须安装插件 其次,您必须设置(配置)导入的数据

答案 2 :(得分:0)

  • 什么是Logstash? Logstash是一个实时的数据收集引擎 流水线功能。您可以使用Logstash来收集日志, 将它们解析为您想要的格式并存储它们以供搜索或 监控您的应用程序。

Step-1 :下载最新版本    弹性搜索

Step-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”参数=> {“user_list”=> “users”} schedule => “* * * * *”声明=> “选择名称,来自用户的电子邮件”}}输出{elasticsearch {index => “users”document_type => “users”document_id => “%{123}”hosts => “localhost:9200”}}

Jdbc输入参数说明

jdbc_driver_library jdbc库jdbc_driver_class JDBC的完整路径    要加载的驱动程序类,对于MySQL,它是com.mysql.jdbc.Driver    jdbc_connection_string JDBC mysql连接字符串jdbc_user MySQL    user jdbc_password MySQL用户密码计划运行输入语句    每分钟。可用调度选项语句MySQL语句    parameters要在MySQL语句中传递的参数

Jdbc输出参​​数说明

参数说明
index Elasticsearch索引名称    document_type Elasticsearch索引类型。   document_id弹性搜索文档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

答案 3 :(得分:0)

在这种情况下,您有两个选择:-

  1. 基于事件,因此您可以在 api 级别触发事件并侦听事件以重新同步更改。
  2. Orm 级别,大多数 Orm 都有钩子,因此您可以监听钩子并重新同步 Elastic 搜索。