首页 > 解决方案 > 如何使用 php 将 elasticsearch 集成到 mysql

问题描述

我正在做一个需要使用elasticsearch的项目。我遵循了指南:https ://www.elastic.co/guide/en/elasticsearch/client/php-api/current/index.html 它对我来说非常有效:

require 'vendor/autoload.php';
use Elasticsearch\ClientBuilder;
$hosts = [
    'myhost'
];
$client = ClientBuilder::create()           // Instantiate a new ClientBuilder
                    ->setHosts($hosts)      // Set the hosts
                    ->build();  
$params = [
    'index' => 'php-demo-index',

    'type' => 'doc',
    'id'    => 'my_id',
    'body'  => ['testField' => 'abc']
];

$response = $client->index($params);
print_r($response);

现在,这只是一个基本的事情。现在,我想要将它与 Mysql 集成,即当我更新或插入数据库中的表时,它会在 elasticsearch 中自动索引。我知道,我们有 Logstash 可以在给定时间间隔后不断查询 db 并索引到 elasticsearch。但是,我希望在不使用logstash 的情况下使用PHP 插入数据库后自动进行索引。我知道(nodeJs + mongodb)中的这样一个库,即。猫鼬:https ://www.npmjs.com/package/mongoosastic 。php 中是否有可以自动执行此类任务的库。如果您知道,请提供示例代码。

标签: phpmysqlelasticsearchkibana

解决方案


确实有库可以自动执行此任务。然而,它通常需要使用像 Doctrine 这样的ORM才能优雅地挂接到您的数据库实现中。如果您能够在项目中使用Symfony框架,那么有一个名为FOSElasticaBundle的库,它可以使您的索引与数据库操作保持同步。


推荐阅读