gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:23:16 25 4
gpt4 key购买 nike

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

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

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

最佳答案

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

  • 一次在 Drupal 的数据库中,这是每个代码行中使用的节点
  • 有一次在 Elasticsearch 索引中,这个永远不会“使用”;我们使用全文搜索来查找 nid,然后在 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com