10

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

谢谢莫希特

4

4 回答 4

4

与 Sphinx 一样,Elastic Search 中没有对 mysql 的本机支持(目前)。

Elastic Search 是一个很好的搜索选择,但您可能需要做一些自定义工作,以便在数据库中的项目发生更改时触发对它们的重新索引。具体如何实现将在很大程度上取决于您的应用程序。Elastic Search 具有出色的近乎实时的搜索功能,并且已被证明在繁重的索引负载下表现良好,因此触发重新索引对于大多数应用程序来说不应该是一个问题。

NoSQL 运动似乎也开始流行起来 。一些应用程序使用 Elastic Search 作为唯一的数据存储。

于 2011-12-23T19:14:21.963 回答
4

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

第一次安装有点麻烦,但是可以。

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

于 2013-04-18T06:25:38.393 回答
0
  • 什么是 Logstash?Logstash 是一个具有实时流水线功能的数据收集引擎。您可以使用 Logstash 收集您的日志,将它们解析为您想要的格式并存储它们以用于搜索或监控您的应用程序。

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

Step-2:下载logstasch后需要安装jdbc插件

bin/plugin 安装 logstash-input-jdbc

第3步:下载mysql-jdbc驱动程序...我下载的文件名为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 这里是内容:

输入 { 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 => "* * * * *" statement => "select name,email来自用户” } } 输出 { 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 用户 jdbc_password MySQL 用户密码 schedule 每分钟运行一次输入语句。可用的调度选项语句 MySQL 语句参数 MySQL 语句中要传递的参数

Jdbc 输出参数说明

参数 说明
index Elasticsearch 索引名称 document_type Elasticsearch 索引类型。弹性搜索文档的 document_id id


Step-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中快速测试您的数据

谢谢你,德布斯

于 2016-05-22T06:18:20.050 回答
0

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

  1. 基于事件,因此您可以在 api 级别触发事件并监听事件以重新同步更改。
  2. Orm 级别,大部分 Orm 都有 hooks,所以你可以监听 hooks 并重新同步 Elastic search。
于 2021-07-10T09:18:38.260 回答