php - Drupal 8存储节点数据替代存储

标签 php elasticsearch drupal drupal-8

没有太多代码示例,只有一个问题和一个想法。

我希望能够使用弹性 DSL 查询将节点数据(来自内容创建)保存到内部数据存储中。

我听过/看过有关 Drupal 在一定程度上支持 MongoDB 的幻灯片,这让我认为这是可行的。即使我必须重写 NodeForm/save 处理程序,是否有办法为此目的操作节点实体?

最佳答案

这是完全可行的。我们在所有 Drupal 项目中都使用 Elasticsarch,主要是将其用于全文搜索。每个节点保存两次:

  • 在 Drupal 的数据库中,这是每行代码中使用的节点
  • 一次在 Elasticsearch 索引中,这个索引从未被“使用”过;我们使用全文搜索来查找 nids,然后在 Drupal DB 中检索完整对象

您可以使用elasticsearch_connector模块来获得一个易于使用的管理器,如下所示:

$cluster = Cluster::load('ES-CLUSTER');
$clientManager = \Drupal::service('elasticsearch_connector.client_manager');
$client = $clientManager->getClientForCluster($this->cluster);

然后使用此客户端来管理节点的索引:

function hook_node_insert($node) {
  $client->insert($node);
}
function hook_node_update($node) {
  $client->update($node);
}
function hook_node_insert($node) {
  $client->delete($node);
}

工作的最大部分是创建映射(如果您希望它可以通过模块进行管理),但这里 elasticsearch_connector 将为您提供相应的工具:

$client->indices()->putMapping($params); 
$client->indices()->putSettings($params); 
$client->search($params); 

关于php - Drupal 8存储节点数据替代存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43204520/

相关文章:

php - 无法将 PDF 文档加载到我的数据库 php 中的 blob 类型

php - MySQL查询重复内容

logging - Logstash配置更改-重新解析旧日志

php - Elasticsearch 中的AND OR查询

drupal - 将 WordPress 主题转换为 Drupal 6?

php - 使用 PHP 访问用户的网络摄像头

php - 发帖到错误的类别

elasticsearch - Elasticsearch ignore_above 设置使用

php - 如何使用 node_load 并呈现上下文链接

php - 直接在 PHP 中读取传递的 XML 文件