php - 如何使用 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 中是否有可以自动执行此类任务的库。如果您知道,请提供示例代码。
解决方案
确实有库可以自动执行此任务。然而,它通常需要使用像 Doctrine 这样的ORM才能优雅地挂接到您的数据库实现中。如果您能够在项目中使用Symfony框架,那么有一个名为FOSElasticaBundle的库,它可以使您的索引与数据库操作保持同步。
推荐阅读
- html - 单击其他位置后,如何使按钮保持焦点状态?
- quantum-computing - 如何在 Windows 中安装 QCL 以实现 Grover 算法?
- php - Symfony 形式问题 - 变量形式不存在
- php - 如何 preg_match 字符串中的单词?
- r - 在R中的数据框中相互减去两个分类列
- python - 打包的 kivy 应用程序在多线程时打开新窗口
- python - 在 django 中使用 FFMPEG 在网络上上传后从视频中提取 WAV 音频文件
- node.js - 如何从表中选择 100 行乘 100 行?
- java - 为什么我的选择排序算法总是出错
- python - Scipy:使用数值导数的牛顿法比正割法更快吗