没有太多代码示例,只有一个问题和一个想法。
我希望能够使用弹性 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/