首先,您需要安装一些jar文件以便JanusGraph处理gremlin-python脚本:
./bin/gremlin-server.sh -i org.apache.tinkerpop gremlin-python 3.2.9
请注意您安装的gremlin-python版本必须与JanusGraph兼容的Tinkerpop版本匹配。您可以在JanusGraph发布页面上找到兼容性信息,链接为
https://github.com/JanusGraph/janusgraph/releases。例如,JanusGraph 0.2.2与Tinkerpop 3.2.9兼容。
接下来,您需要使用ConfiguredGraphFactory启动一个JanusGraph服务器。您只需使用分发包中的文件
conf/gremlin-server/gremlin-server-configuration.yaml
即可。
bin/gremlin-server.sh conf/gremlin-server/gremlin-server-configuration.yaml
这个文件与传统的conf/gremlin-server/gremlin-server.yaml
文件在几行内容上有所不同
graphManager: org.janusgraph.graphdb.management.JanusGraphManager
graphs: {
ConfigurationManagementGraph: conf/janusgraph-cql-configurationgraph.properties
}
初始化服务器时,我们需要加载图形MYGRAPH
。请创建一个初始化脚本scripts/init.groovy
。在这里,您可以加载尽可能多的不同图形。
def globals = [:]
myGraph = ConfiguredGraphFactory.open("MYGRAPH")
globals << [myGraphTraversal : myGraph.traversal()]
确保在 conf/gremlin-server/gremlin-server-configuration.yaml
中启动Gremlin服务器时执行此脚本
scriptEngines: {
gremlin-groovy: {
imports: [java.lang.Math],
staticImports: [java.lang.Math.PI],
scripts: [scripts/init.groovy]}}
最后,在您的Python项目中安装与JanusGraph版本相匹配的gremlin-python软件包。 对于JanusGraph 0.2.2,这是版本3.2.9。
pip install gremlin-python==3.2.9
打开Python shell并开始编写代码:
>>> from gremlin_python import statics
>>> from gremlin_python.structure.graph import Graph
>>> from gremlin_python.process.graph_traversal import __
>>> from gremlin_python.process.strategies import *
>>> from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection
>>> graph = Graph()
>>> myGraphTraversal = graph.traversal().withRemote(DriverRemoteConnection('ws://localhost:8182/gremlin','myGraphTraversal'))
>>> myGraphTraversal.V().count()
gremlin-server.yaml
中进行更改,而不是在gremlin-server-configuration.yaml
中进行更改(为什么会有两个?它们看起来完全相同...),并且在我的.yaml
文件中,只有scriptEngines.gremlin-groovy
下的plugins
部分,因此我使用了scriptEngines.gremlin-groovy.plugins:{org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin: {files: ['scripts/init.groovy']}}
代替了scriptEngines.gremlin-groovy.scripts: [scripts/init.groovy]
。 - Glennie Helles Sindholt