在 datastax 图中使用 gremlin 访问 Solr 的最佳方法

Posted

技术标签:

【中文标题】在 datastax 图中使用 gremlin 访问 Solr 的最佳方法【英文标题】:Best way to access Solr using gremlin in datastax graph 【发布时间】:2020-04-16 12:08:22 【问题描述】:

在 Datastax 图数据库中使用 Solr 的最佳方式是什么。所以,目前我们有 4 个节点的集群,其中 3 个节点是 DSE,1 个节点用作 Solr 实例。

现在,我们目前正在使用 Solr Web 服务将 Solr 集成到我们使用 gremlin 与 DSE 对话的后端代码中。

现在,我们即将向集群添加一个 Solr 实例,使用 Solr Web 服务似乎不是一个好的选择,因为我们将有多个 url 来访问正确的索引。

当您在后端的 Datastax 上使用 Gremlin 时,集成 Solr 的最佳方式是什么。

【问题讨论】:

为什么要使用单独的 Solr 实例而不是使用 DSE 搜索? 我只使用 DSE 搜索。事情是我有 4 个实例,其中 3 个启用了 DSE Graph,1 个启用了 DSE Solr 【参考方案1】:

这里有几件事:

    您的节点在同一数据中心内启用了不同的工作负载。您需要为数据中心内的所有节点启用图形和搜索工作负载。类似问题请见this answer。 您可以直接从 Gremlin 使用 DSE 搜索,无需明确指定 Tomcat URL。你只需要在对应的属性上创建一个搜索索引,然后使用tokenregex等操作即可。见corresponding part of DSE Graph documentation; 即使没有 Gremlin,您也可以直接使用 CQL 中的大部分 DSE 搜索功能,而无需了解有关 Web 服务 URL 的任何信息 - 您只需将 solr_query 用于 specification of the query,或者仅在 DSE 版本中使用 SELECT ... FROM ... WHERE col LIKE 'text%'; 6.x。

【讨论】:

嘿@Alex 感谢您的回答。所以如果我理解正确,我们在同一个数据中心有不同的工作负载,应该在所有节点上启用它。如果我们进行工作负载隔离,我们可以在不同的数据中心启用不同的工作负载。在一个数据中心上说图表,在另一个数据中心上说 Solr。 是的 - 您需要让 DC 中的所有节点具有相同的工作负载。关于工作负载分离 - 我不是 100% 确定(我不经常使用 Graph),但如果我没记错的话,现在你需要在同一个 DC 中拥有 Graph 和 Search,因为 DSE 搜索是本地特定的数据中心,如果 Graph DC 中没有索引,虽然查询不会失败,但 DSE 根本找不到数据。

以上是关于在 datastax 图中使用 gremlin 访问 Solr 的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

使用Gremlin在图中查找最长的循环路径

Gremlin 更新现有属性

CosmosDB Graph:“upsert”查询模式

DSE 图中是不是支持服务器端功能?

如何在 TinkerPop 图中传播值

无法在 DSE 图中打印节点属性