-
Gremlin特殊语法优化 GES集成了gremlin中的OLTP功能,并在一定程度上做了部分功能增强与strategy优化。 增强版Text Predicate g.V().has('name', Text.textSubString('xx')) Predicate 描述 textSubString 子字符串 textCISubString 忽略大小写的子字符串 textFuzzy 模糊匹配 textPrefix 前缀查询 textRegex 正则匹配 在指定schema时,不要给属性取名为id, label, property, properties。 在进行gremlin操作时,有很多step会把结果转化为map结果。众所周知,在map结构中,是不允许出现两个相同key。一般来说当向一个map中重复insert多个相同的key,其value会被覆盖 or 该操作被取消。当把属性名取为id, label, property, properties,在很多操作中,如果id与属性中的id一起返回,结果将是不完整的。
-
Gremlin查询语句 常用的查询语句如下所示: 点查询 g.V().limit(100):查询所有点,但限制点的返回数量为100,也可以使用range(x, y)的算子,返回区间内的点数量。 g.V().hasLabel('movie'):查询点的label值为movie的点。 g.V('11'):查询id为11的点。 不推荐使用“g.V()”语法,由于点过大时,这种查询方式影响展示效果。 为了避免返回数据过大导致系统查询耗时过长,强烈建议您添加limit参数,并且将limit参数设置在1000以内,展示效果更佳。 边查询 g.E():查询所有边,不推荐使用,边数过大时,这种查询方式不合理,一般需要添加过滤条件或限制返回数量。 g.E('55-81-5'):查询边id为55-81-5的边。 g.E().hasLabel('rate'):查询label为rate的边。 g.V('46').outE('rate'):查询点id为46所有label为rate的边。 属性查询 g.V().limit(3).valueMap():查询点的所有属性(可填参数,表示只查询该点, 一个点所有属性一行结果)。 g.V().limit(1).label():查询点的label。 g.V().values('userid').limit(10):查询点的属性为userid的值(可不填参数,表示查询所有属性, 一个点每个属性一行结果,只有value,没有key)。 新增点 g.addV('user').property(id,'600').property('age','18-24'):新增点,Label为user,ID为600,age为18-24。 删除点 g.V('600').drop():删除ID为600的点。 新增边 g.addV('user').property(id,'501').property('age','18-24') g.addV('movie').property(id,'502').property('title','love') g.addE('rate').property('Rating', '4').from(V('501')).to(V('502')) 分别添加点,然后新增边,边的两个点ID分别为501、502。 删除边 g.E('501-502-0').drop():删除ID为501-502-0的边。 如果您输入了多个Gremlin查询命令,可以在输入框中通过上下方向键来查找历史命令。 Gremlin查询支持联想历史记录的功能,根据您输入的语法关键字会自动显示您刚输入过的语法供您参考和选择,帮助您提高查询效率。 图2 Gremlin联想查询 输入栏中的关键词,不同的类型会呈现出不同的颜色,具体颜色区分如下: 保留字:灰色 注意:保留字是编程语言中的一类语法结构。在特定的编程语言里,这些保留字具有较为特殊的意义,并且在语言的格式说明里被预先定义。 String类型:橙色 分隔符(包含 [] {} , ; () . 等):红色 变量:绿色 图3 Gremlin关键字高亮
-
删除label 调用接口后,该label相关联的所有数据都会被删除,请您谨慎操作。 图版本小于2.2.18,不支持schema的label删除功能。 持久化版的图不支持schema的label删除功能。 系统默认的label“_DEFAULT_”不支持删除操作。 删除label的操作如下: 如果您想要删除某个label,在图引擎编辑器的左侧的“元数据”列表中,单击元数据旁的“删除”按钮。 图8 删除label 在弹出的确认窗口内,认真阅读完提示信息,确认要删除的label名称后,在框内完整的输入“DELETE”(或单击“一键输入”),输入完成后单击“是”。 图9 删除确认窗口 删除过程中,画布下方“结果展示区”会显示删除label算法的返回结果。 图10 结果展示 删除过程中,绘图区右侧的条件过滤功能置灰,不可使用。 图11 条件过滤
-
添加label 在图引擎编辑器左侧的元数据列表中,单击,可增加一个新的标签。 Label 名称:表示新增标签的名字。 Label 类型:可以选择设置的标签类型(点,边或者通用类型),通用类型表示标签既可以表示点,也可以表示边。 自定义点样式:您可以来定义标签的颜色和标记,用来区分各个点。 添加属性,默认实体只展示第一个添加的属性,其余不展示,可手动调整展示哪个属性,画布上会实时响应。 图1 添加label
-
隐藏label 隐藏单个label的所有点和边 在图引擎编辑器的左侧的元数据列表中,单击元数据旁的“眼睛”按钮,可在图分析结果中隐藏该元数据的所有点。 图4 隐藏label 隐藏label:隐藏当前label是否在画布中展示。 在图引擎编辑器左侧的元数据列表中,单击想要修改的元数据,会弹出该元数据label详情页,单击label旁的第二个“”按钮,可在画布中隐藏当前label信息展示,仅支持当前label下的点。 图5 隐藏label
-
修改label 图版本为2.3.18及以上版本支持该功能。 在图引擎编辑器左侧的元数据列表中,单击想要修改的元数据,会弹出该元数据label详情页。 可以直接修改label的属性名称、基数、数据类型等信息。 若想要隐藏或删除该属性,可以单击操作列的“隐藏”或“删除”按钮进行操作。 若您误删了某个属性或者修改有误,可以单击“复位”按钮,将会回到您上一次保存的数据状态。 修改完成,确认无误后,单击“保存”按钮进行更新。 图3 修改label
-
label的导入和导出 将当前图的元数据、点边数据集导入到OBS桶内或者从OBS桶内导出。 导入:单击元数据列表中“导入”。在弹出的窗口中,选择要导入的元数据,点边数据集,日志储存路径,边处理以及导入类型后,单击“确定”可将数据从OBS桶内导入到当前图中。 日志储存路径:用于存储导入图过程中不符合元数据定义的点、边数据集和详细日志。 边处理:包括“允许重复边”,“忽略之后的重复边”,“覆盖之前的重复边”和“重复边忽略Label”。重复边默认起点和终点相同,当考虑label时,表示边的起点、终点、label相同才为重复边。 图6 元数据的导入 导出:单击元数据列表中“导出”。在弹出的窗口中,设置要导出的元数据、点边数据集的名称和导出的路径,单击“确定”可将数据导出到OBS桶内。 图7 元数据的导出