当前位置: 首页 > 面试题库 >

Elasticsearch-我需要JDBC驱动程序吗?

巫煌
2023-03-14
问题内容

目标

要将我的Elasticsearch服务器与SQL数据库中的新数据和过期数据同步

问题

我可以通过两种非常不同的方式来实现这一目标,但我不知道哪种更好。我可以使用JDBC river插件通过直接连接到SQL数据库的方式 信息
入elasticsearch。另外,我可以使用下面的代码作为示例,使用PHP客户端 数据
送到elasticsearch:

// The Id of the document
$id = 1;

// Create a document
$tweet = array(
    'id'      => $id,
    'user'    => array(
        'name'      => 'mewantcookie',
        'fullName'  => 'Cookie Monster'
    ),
    'msg'     => 'Me wish there were expression for cookies like there is for apples. "A cookie a day make the doctor diagnose you with diabetes" not catchy.',
    'tstamp'  => '1238081389',
    'location'=> '41.12,-71.34',
    '_boost'  => 1.0
);
// First parameter is the id of document.
$tweetDocument = new \Elastica\Document($id, $tweet);

// Add tweet to type
$elasticaType->addDocument($tweetDocument);

// Refresh Index
$elasticaType->getIndex()->refresh();

我打算每30分钟运行一次cron,以检查数据库中不仅有“活动”标志而且没有“索引”标志的项目,这意味着我需要将它们添加到索引中。

看来我有两种方法可以通过两种不同方式在elasticsearch和mysql之间同步数据,每种选择的优点和缺点是什么。是否有一个特定的用例定义了一个使用?


问题答案:

如果您暂时忘了需要将初始数据导入到Elasticsearch中,那么我将使用事件系统 数据
送到Elasticsearch。从长远来看,这会更有效率。

你的应用程序知道 正是
当事情需要由Elasticsearch索引。以您的tweet为例,有时某个新的tweet将进入您的应用程序(例如,用户编写了一个)。这将触发一个newTweet事件。您已经有了一个侦听器,该侦听器将侦听该事件,并在分派此类事件时将其存储在Elasticsearch中。

如果你不希望使用资源/时间在Web请求要做到这一点(和你肯定
希望这样做),听众可以一个作业添加到队列(Gearman的或Beanstalkd为例)。然后,您将需要一个工作人员来接替该工作并将推文存储在Elasticsearch中。

主要优势是使Elasticsearch保持最新的实时性。您不需要会造成延迟的cronjob。您(通常)一次将处理一个文档。您无需费心SQL数据库来找出需要(重新)索引的内容。

另一个优点是,当事件/数据量失控时,您可以轻松扩展。当Elasticsearch本身需要更多功能时,请将服务器添加到集群中。当工作人员无法处理负载时,只需添加更多负载(并将它们放置在专用机器上)。再加上您的Web服务器和SQL数据库不会有任何影响。



 类似资料:
  • https://www.mkyong.com/maven/how-to-add-oracle-jdbc-driver-in-your-maven-local-repository/I试图做到 $mvn安装:install-file-dfile=path/to/your/ojdbc8.jar-dgroupid=com.oracle-dartifactid=ojdbc8-dversion=19.3-d

  • 问题内容: 有人告诉我,加载JDBC驱动程序的首选方法是: 我知道,这对于从XML配置文件或用户输入中读取多个驱动程序之间的动态决策更好。我很好奇的是,调用此语句如何将指定的驱动程序加载到我们什至没有将生成的“ Class”对象存储在任何地方的环境中。JavaDocs条目说: 返回与具有给定字符串名称的类或接口关联的Class对象 在那种情况下,Java开发人员仅凭此语句如何设法促进驱动程序对象的

  • 主要内容:JDBC驱动程序是什么?,JDBC驱动程序类型,应该使用哪个驱动程序?JDBC驱动程序是什么? JDBC驱动程序在JDBC API中实现定义的接口,用于与数据库服务器进行交互。 例如,使用JDBC驱动程序,可以通过发送SQL或数据库命令,然后使用Java接收结果来打开数据库连接并与数据库进行交互。 JDK附带的包包含各种类,其类的行为被定义,实现在第三方驱动程序中完成。 第三方供应商在其数据库驱动程序中实现接口。 JDBC驱动程序类型 JDBC驱动程序实现因Java

  • 问题内容: 我很难确定应该如何在我的debian 6.0服务器上为PostgreSQL安装JDBC驱动程序。我已将驱动程序.jar移至以下目录: 然后,教程讨论如何使用此代码: 但是,由于我是PostgreSQL的新手,所以我不知道应该把这行放在哪里,或者这是否正确。 我的问题是,除了将jar文件移动到此位置之外,为了在我的postgreSQL安装上安装JDBC驱动程序,我实际上需要做什么? 编辑

  • 问题内容: 输出 >无法连接到数据库服务器java.lang.ClassNotFoundException 问题答案: 看来您应该将MySQL驱动程序jar放入 类路径中 。

  • 问题内容: 我目前正在为大学的一个班级做项目。我正在学习有关连接和操作数据库的信息,我们正在使用Microsoft .accdb文件。 这是我到目前为止所拥有的。 当寻找“ sun.jdbc.odbc.JdbcOdbcDriver”时,我得到以下输出。 似乎很容易解决。看来我想念司机或类似的东西。但是,我很难找到解决方法。JDK随附驱动程序吗?我需要单独下载吗?是否取决于我的操作系统?(Mac O