nGQL命令汇总

    • 字符串函数

      函数说明
      int strcasecmp(string a, string b)比较两个字符串(不区分大小写)。当a=b时,返回0,当a>b是,返回大于0的数,当a<b时,返回小于0的数。
      string lower(string a)返回小写形式的字符串。
      string toLower(string a)lower()相同。
      string upper(string a)返回大写形式的字符串。
      string toUpper(string a)upper()相同。
      int length(string a)以字节为单位,返回给定字符串的长度。
      string trim(string a)删除字符串头部和尾部的空格。
      string ltrim(string a)删除字符串头部的空格。
      string rtrim(string a)删除字符串尾部的空格。
      string left(string a, int count)返回字符串左侧count个字符组成的子字符串。如果count超过字符串a的长度,则返回字符串a。
      string right(string a, int count)返回字符串右侧count个字符组成的子字符串。如果count超过字符串a的长度,则返回字符串a。
      string lpad(string a, int size, string letters)在字符串a的左侧填充letters字符串,并返回size长度的字符串。
      string rpad(string a, int size, string letters)在字符串a的右侧填充letters字符串,并返回size长度的字符串。
      string substr(string a, int pos, int count)从字符串a的指定位置pos开始(不包括pos位置的字符),提取右侧的count个字符,组成新的字符串并返回。
      string substring(string a, int pos, int count)substr()相同。
      string reverse(string)逆序返回字符串。
      string replace(string a, string b, string c)将字符串a中的子字符串b替换为字符串c。
      list split(string a, string b)在子字符串b处拆分字符串a,返回一个字符串列表。
      string toString()将任意数据类型转换为字符串类型。
      int hash()获取任意对象的哈希值。
    • 函数说明
      int now()根据当前系统返回当前时区的时间戳。
      timestamp timestamp()根据当前系统返回当前时区的时间戳。
      date date()根据当前系统返回当前日期(UTC时间)。
      time time()根据当前系统返回当前时间(UTC时间)。
      datetime datetime()根据当前系统返回当前日期和时间(UTC时间)。
    • 列表函数

      函数说明
      keys(expr)返回一个列表,包含字符串形式的点、边或映射的所有属性。
      labels(vertex)返回点的Tag列表。
      nodes(path)返回路径中所有点的列表。
      range(start, end [, step])返回[start,end]范围内固定步长的列表,默认步长step为1。
      relationships(path)返回路径中所有关系的列表。
      reverse(list)返回将原列表逆序排列的新列表。
      tail(list)返回不包含原列表第一个元素的新列表.
      head(list)返回列表的第一个元素。
      last(list)返回列表的最后一个元素。
      coalesce(list)返回列表中第一个非空元素。
      reduce()请参见。
    • count函数

      函数说明
      count()语法:count({expr | *})
      count()返回总行数(包括NULL)。
      count(expr)返回满足表达式的非空值的总数。
      count()size()是不同的。
    • 函数说明
      collect()collect()函数返回一个符合表达式返回结果的列表。该函数可以将多条记录或值合并进一个列表,实现数据聚合。
    • reduce函数

      函数语法说明
      reduce()reduce(<accumulator> = <initial>, <variable> IN <list>reduce()将表达式逐个应用于列表中的元素,然后和累加器中的当前结果累加,最后返回完整结果。
    • 函数说明
      hash()hash()函数返回参数的哈希值。其参数可以是数字、字符串、列表、布尔值、NULL等类型的值,或者计算结果为这些类型的表达式。hash()函数采用MurmurHash2算法,种子(seed)为0xc70f6907UL。用户可以在MurmurHash2.h中查看其源代码。
    • 函数说明
      concat()concat()函数至少需要两个或以上字符串参数,并将所有参数连接成一个字符串。
      语法:concat(string1,string2,…)
    • 函数说明
      concat_ws()concat_ws()函数将两个或以上字符串参数与预定义的分隔符(separator)相连接。
    • 谓词函数

      谓词函数只返回truefalse,通常用于WHERE子句中。

    • CASE表达式使用条件来过滤nGQL查询语句的结果,常用于YIELDRETURN子句中。CASE表达式会遍历所有条件,并在满足第一个条件时停止读取后续条件,然后返回结果。如果不满足任何条件,将通过ELSE子句返回结果。如果没有ELSE子句且不满足任何条件,则返回NULL

      语法:

      1. CASE <comparer>
      2. WHEN <value> THEN <result>
      3. [WHEN ...]
      4. [ELSE <default>]
      5. END
      参数说明
      comparer用于与value进行比较的值或者有效表达式。
      valuecomparer进行比较,如果匹配,则满足此条件。
      result如果value匹配comparer,则返回该result
      default如果没有条件匹配,则返回该default

    通用查询语句

    • 模式示例说明
      匹配点(v)用户可以在一对括号中使用自定义变量来表示模式中的点。例如(v)
      匹配TagMATCH (v:player) RETURN v用户可以在点的右侧用:<tag_name>表示模式中的Tag。
      匹配点的属性MATCH (v:player{name:”Tim Duncan”}) RETURN v用户可以在Tag的右侧用{<prop_name>: <prop_value>}表示模式中点的属性。
      匹配单点IDMATCH (v) WHERE id(v) == ‘player101’ RETURN v用户可以使用点ID去匹配点。id()函数可以检索点的ID。
      匹配多点IDMATCH (v:player { name: ‘Tim Duncan’ })—(v2) WHERE id(v2) IN [“player101”, “player102”] RETURN v2要匹配多个点的ID,可以用WHERE id(v) IN [vid_list]
      匹配连接的点MATCH (v:player{name:”Tim Duncan”})—(v2) RETURN v2.name AS Name用户可以使用符号表示两个方向的边,并匹配这些边连接的点。用户可以在符号上增加<>符号指定边的方向。
      匹配路径MATCH p=(v:player{name:”Tim Duncan”})—>(v2) RETURN p连接起来的点和边构成了路径。用户可以使用自定义变量命名路径。
      匹配边MATCH (v:player{name:”Tim Duncan”})-[e]-(v2) RETURN e除了用—><—表示未命名的边之外,用户还可以在方括号中使用自定义变量命名边。例如-[e]-
      匹配Edge typeMATCH ()-[e:follow]-() RETURN e和点一样,用户可以用:<edge_type>表示模式中的Edge type,例如-[e:follow]-
      匹配边的属性MATCH (v:player{name:”Tim Duncan”})-[e:follow{degree:95}]->(v2) RETURN e用户可以用{<prop_name>: <prop_value>}表示模式中Edge type的属性,例如[e:follow{likeness:95}]
      匹配多个Edge typeMATCH (v:player{name:”Tim Duncan”})-[e:follow | :serve]->(v2) RETURN e使用|可以匹配多个Edge type,例如[e:follow | :serve]。第一个Edge type前的英文冒号(:)不可省略,后续Edge type前的英文冒号可以省略,例如[e:follow | serve]
      匹配多条边MATCH (v:player{name:”Tim Duncan”})-[]->(v2)<-[e:serve]-(v3) RETURN v2, v3用户可以扩展模式,匹配路径中的多条边。
      匹配定长路径MATCH p=(v:player{name:”Tim Duncan”})-[e:follow2]->(v2) RETURN DISTINCT v2 AS Friends用户可以在模式中使用:<edge_type><hop>匹配定长路径。hop必须是一个非负整数。
      匹配变长路径MATCH p=(v:player{name:”Tim Duncan”})-[e:follow1..3]->(v2) RETURN v2 AS FriendsminHop:可选项。表示路径的最小长度。minHop必须是一个非负整数,默认值为1。
      maxHop:必选项。表示路径的最大长度。maxHop必须是一个非负整数,没有默认值。
      匹配多个Edge type的变长路径MATCH p=(v:player{name:”Tim Duncan”})-[e:follow | serve2]->(v2) RETURN DISTINCT v2用户可以在变长或定长模式中指定多个Edge type。hopminHopmaxHop对所有Edge type都生效。
      检索点或边的信息MATCH (v:player{name:”Tim Duncan”}) RETURN v
      MATCH (v:player{name:”Tim Duncan”})-[e]->(v2) RETURN e
      使用RETURN {<vertex_name> | <edge_name>}检索点或边的所有信息。
      检索点IDMATCH (v:player{name:”Tim Duncan”}) RETURN id(v)使用id()函数检索点ID。
      检索Tag使用labels()函数检索点上的Tag列表。
      检索列表labels(v)中的第N个元素,可以使用labels(v)[n-1]
      检索点或边的单个属性MATCH (v:player{name:”Tim Duncan”}) RETURN v.age使用RETURN {<vertex_name> | <edge_name>}.<property>检索单个属性。
      使用AS设置属性的别名。
      检索点或边的所有属性MATCH p=(v:player{name:”Tim Duncan”})-[]->(v2) RETURN properties(v2)使用properties()函数检索点或边的所有属性。
      检索Edge typeMATCH p=(v:player{name:”Tim Duncan”})-[e]->() RETURN DISTINCT type(e)使用type()函数检索匹配的Edge type。
      检索路径MATCH p=(v:player{name:”Tim Duncan”})-[3]->() RETURN p使用RETURN <path_name>检索匹配路径的所有信息。
      检索路径中的点MATCH p=(v:player{name:”Tim Duncan”})-[]->(v2) RETURN nodes(p)使用nodes()函数检索路径中的所有点。
      检索路径中的边MATCH p=(v:player{name:”Tim Duncan”})-[]->(v2) RETURN relationships(p)使用relationships()函数检索路径中的所有边。
      检索路径长度MATCH p=(v:player{name:”Tim Duncan”>})-[..2]->(v2) RETURN p AS Paths, length(p) AS Length使用length()函数检索路径的长度。
    • 示例说明
      GO FROM “player102” OVER serve返回player102所属队伍。
      GO 2 STEPS FROM “player102” OVER follow返回距离player102两跳的朋友。
      GO FROM “player100”, “player102” OVER serve WHERE properties(edge).start_year > 1995 YIELD DISTINCT properties($$).name AS team_name, properties(edge).start_year AS start_year, properties($^).name AS player_name添加过滤条件。
      GO FROM “player100” OVER follow, serve YIELD properties(edge).degree, properties(edge).start_year遍历多个Edge type。属性没有值时,会显示UNKNOWN_PROP
      GO FROM “player100” OVER follow REVERSELY YIELD src(edge) AS destination返回player100入方向的邻居点。
      GO FROM “player100” OVER follow REVERSELY YIELD src(edge) AS id | GO FROM $-.id OVER serve WHERE properties($^).age > 20 YIELD properties($^).name AS FriendOf, properties($$).name AS Team查询player100的朋友和朋友所属队伍。
      GO FROM “player102” OVER follow YIELD dst(edge) AS both返回player102所有邻居点。
      GO 2 STEPS FROM “player100” OVER follow YIELD src(edge) AS src, dst(edge) AS dst, properties($$).age AS age | GROUP BY $-.dst YIELD $-.dst AS dst, collect_set($-.src) AS src, collect($-.age) AS age根据年龄分组。
    • FETCH

      1. FETCH PROP ON {<tag_name>[, tag_name ...] | *}
      2. <vid> [, vid ...]
      3. [YIELD <return_list> [AS <alias>]]
      示例说明
      FETCH PROP ON player “player100”FETCH语句中指定Tag获取对应点的属性值。
      FETCH PROP ON player “player100” YIELD player.name AS name使用YIELD子句指定返回的属性。
      FETCH PROP ON player “player101”, “player102”, “player103”指定多个点ID获取多个点的属性值,点之间用英文逗号(,)分隔。
      FETCH PROP ON player, t1 “player100”, “player103”FETCH语句中指定多个Tag获取属性值。Tag之间用英文逗号(,)分隔。
      FETCH PROP ON “player100”, “player106”, “team200”FETCH语句中使用获取当前图空间所有标签里,点的属性值。
      FETCH PROP ON serve “player102” -> “player106” YIELD dst(edge)语法:FETCH PROP ON <edge_type> <src_vid> -> <dst_vid>[@<rank>] [, <src_vid> -> <dst_vid> …] [YIELD <output>]
      FETCH PROP ON serve “player100” -> “team204”获取连接player100和team204的边serve的所有属性值。
      FETCH PROP ON serve “player100” -> “team204” YIELD serve.start_year使用YIELD子句指定返回的属性。
      FETCH PROP ON serve “player100” -> “team204”, “player133” -> “team202”指定多个边模式(<src_vid> -> <dst_vid>[@<rank>])获取多个边的属性值。模式之间用英文逗号(,)分隔。
      FETCH PROP ON serve “player100” -> “team204”@1要获取rank不为0的边,请在FETCH语句中设置rank。
      GO FROM “player101” OVER follow YIELD follow._src AS s, follow._dst AS d | FETCH PROP ON follow $-.s -> $-.d YIELD follow.degree返回从点player101开始的follow边的degree值。
      $var = GO FROM “player101” OVER follow YIELD follow._src AS s, follow._dst AS d; FETCH PROP ON follow $var.s -> $var.d YIELD follow.degree自定义变量构建查询。
    • 示例说明
      UNWIND [1,2,3] AS n RETURN n拆分列表。
      WITH [1,1,2,2,3,3] AS n UNWIND n AS r WITH DISTINCT r AS r ORDER BY r RETURN collect(r)1. 拆分列表[1,1,2,2,3,3]。 2. 删除重复行。 3. 排序行。 4. 将行转换为列表。
      MATCH p=(v:player{name:”Tim Duncan”})—(v2) WITH nodes(p) AS n UNWIND n AS r WITH DISTINCT r AS r RETURN collect(r)1. 将匹配路径上的顶点输出到列表中。 2. 拆分列表。 3. 删除重复行。 4. 将行转换为列表。
    • SHOW

      语句语法示例说明
      SHOW CHARSETSHOW CHARSETSHOW CHARSET显示当前的字符集。
      SHOW COLLATIONSHOW COLLATION显示当前的排序规则。
      SHOW CREATE SPACESHOW CREATE SPACE <space_name>SHOW CREATE SPACE basketballplayer显示指定图空间的创建语句。
      SHOW CREATE {TAG <tag_name> | EDGE <edge_name>}SHOW CREATE TAG player显示指定Tag/Edge type的基本信息。
      SHOW HOSTSSHOW HOSTS [GRAPH | STORAGE | META]SHOW HOSTS
      SHOW HOSTS GRAPH
      显示Graph、Storage、Meta服务主机信息、版本信息。
      SHOW {TAG | EDGE} INDEX STATUSSHOW TAG INDEX STATUS重建原生索引的作业状态,以便确定重建索引是否成功。
      SHOW INDEXESSHOW {TAG | EDGE} INDEXESSHOW TAG INDEXES列出当前图空间内的所有Tag和Edge type(包括属性)的索引。
      SHOW PARTS [<part_id>]SHOW PARTS显示图空间中指定分片或所有分片的信息。
      SHOW ROLESSHOW ROLES IN <space_name>SHOW ROLES in basketballplayer显示分配给用户的角色信息。
      SHOW SNAPSHOTSSHOW SNAPSHOTS显示所有快照信息。
      SHOW SPACESSHOW SPACESSHOW SPACES显示现存的图空间。
      SHOW STATSSHOW STATS显示最近STATS作业收集的图空间统计信息。
      SHOW TAGS/EDGESSHOW TAGS | EDGESSHOW TAGSSHOW EDGES显示当前图空间内的所有Tag/Edge type。
      SHOW USERSSHOW USERS显示用户信息。
      SHOW SESSIONSSHOW SESSIONSSHOW SESSIONS显示所有会话信息。
      SHOW SESSION <Session_Id>SHOW SESSION 1623304491050858指定会话ID进行查看。
      SHOW QUERIESSHOW [ALL] QUERIESSHOW QUERIES查看当前Session中正在执行的查询请求信息。
      SHOW META LEADERSHOW META LEADER显示当前Meta集群的leader信息。

    子句和选项

    子句语法示例说明
    GROUP BY <var> YIELD <var>, <aggregation_function(var)>GO FROM “player100” OVER follow BIDIRECT YIELD $$.player.name as Name | GROUP BY $-.Name YIELD $-.Name as Player, count() AS Name_Count查找所有连接到player100的点,并根据他们的姓名进行分组,返回姓名的出现次数。
    LIMITYIELD <var> [| LIMIT [<offset_value>,] <number_rows>]O FROM “player100” OVER follow REVERSELY YIELD $$.player.name AS Friend, $$.player.age AS Age | ORDER BY $-.Age, $-.Friend | LIMIT 1, 3从排序结果中返回第2行开始的3行数据。
    RETURN <var> [SKIP <offset>] [LIMIT <number_rows>]MATCH (v:player{name:”Tim Duncan”}) —> (v2) RETURN v2.name AS Name, v2.age AS Age ORDER BY Age DESC SKIP 1用户可以单独使用SKIP <offset>设置偏移量,后面不需要添加LIMIT <number_rows>
    ORDER BY<YIELD clause> ORDER BY <expression> [ASC | DESC] [, <expression> [ASC | DESC] …]FETCH PROP ON player “player100”, “player101”, “player102”, “player103” YIELD player.age AS age, player.name AS name | ORDER BY $-.age ASC, $-.name DESCORDER BY子句指定输出结果的排序规则。
    RETURN {<vertex_name>|<edge_name>|<vertex_name>.<property>|<edge_name>.<property>|…}MATCH (v:player) RETURN v.name, v.age LIMIT 3返回点的属性为nameage的前三行值。
    TTLCREATE TAG <tag_name>(<property_name_1> <property_value_1>, <property_name_2> <property_value_2>, …) ttl_duration= <value_int>, ttl_col = <property_name>CREATE TAG t2(a int, b int, c string) ttl_duration= 100, ttl_col = “a”创建Tag并设置TTL选项。
    MATCH (v:player) WHERE v.name == “Tim Duncan” XOR (v.age < 30 AND v.name == “Yao Ming”) OR NOT (v.name == “Yao Ming” OR v.name == “Tim Duncan”) RETURN v.name, v.ageWHERE子句可以根据条件过滤输出结果,通常用于GOLOOKUP语句,MATCHWITH语句。
    YIELDYIELD [DISTINCT] <col> [AS <alias>] [, <col> [AS <alias>] …] [WHERE <conditions>];GO FROM “player100” OVER follow YIELD dst(edge) AS ID | FETCH PROP ON player $-.ID YIELD player.age AS Age | YIELD AVG($-.Age) as Avg_age, count()as Num_friends查找player100关注的player,并计算他们的平均年龄。
    MATCH $expressions WITH {nodes()|labels()|…}MATCH p=(v:player{name:”Tim Duncan”})—() WITH nodes(p) AS n UNWIND n AS n1 RETURN DISTINCT n1WITH子句可以获取并处理查询前半部分的结果,并将处理结果作为输入传递给查询的后半部分。

    图空间语句

    语句语法示例说明
    CREATE SPACE [IF NOT EXISTS] <graph_space_name> ( [partition_num = <partition_number>,] [replica_factor = <replica_number>,] vid_type = {FIXED_STRING(<N>)| INT[64]} ) [COMMENT = ‘<comment>’]CREATE SPACE my_space_1 (vid_type=FIXED_STRING(30))创建一个新的图空间。
    CREATE SPACECREATE SPACE <new_graph_space_name> AS <old_graph_space_name>CREATE SPACE my_space_4 as my_space_3克隆现有图空间的Schema
    USE <graph_space_name>USE space1指定一个图空间,或切换到另一个图空间,将其作为后续查询的工作空间。
    SHOW SPACESSHOW SPACESSHOW SPACES列出Nebula Graph示例中的所有图空间。
    DESC[RIBE] SPACE <graph_space_name>DESCRIBE SPACE basketballplayer显示指定图空间的信息。
    DROP SPACEDROP SPACE [IF EXISTS] <graph_space_name>DROP SPACE basketballplayer删除指定图空间的所有内容。
    语句语法示例说明
    CREATE TAG [IF NOT EXISTS] <tag_name> ( <prop_name> <data_type> [NULL | NOT NULL] [DEFAULT <default_value>] [COMMENT ‘<comment>’] [{, <prop_name> <data_type> [NULL | NOT NULL] [DEFAULT <default_value>] [COMMENT ‘<comment>’]} …] ) [TTL_DURATION = <ttl_duration>] [TTL_COL = <prop_name>] [COMMENT = ‘<comment>’]CREATE TAG woman(name string, age int, married bool, salary double, create_time timestamp) TTL_DURATION = 100, TTL_COL = “create_time”通过指定名称创建一个Tag。
    DROP TAGDROP TAG [IF EXISTS] <tag_name>CREATE TAG test(p1 string, p2 int)删除当前工作空间内所有点上的指定Tag。
    ALTER TAG <tag_name> <alter_definition> [, alter_definition] …] [ttl_definition [, ttl_definition] … ] [COMMENT = ‘<comment>’]ALTER TAG t1 ADD (p3 int, p4 string)修改Tag的结构。例如增删属性、修改数据类型,也可以为属性设置、修改[TTL](../3.ngql-guide/8.clauses-and-options/ttl-options.md(Time-To-Live)。
    SHOW TAGSSHOW TAGSSHOW TAGS显示当前图空间内的所有Tag名称。
    DESC[RIBE] TAG <tag_name>DESCRIBE TAG player指定Tag的详细信息,例如字段名称、数据类型等。
    DELETE TAGDELETE TAG <tag_name_list> FROM <VID>DELETE TAG test1 FROM “test”删除指定点上的指定Tag。

    Edge type语句

    点语句

    语句语法示例说明
    INSERT VERTEX [IF NOT EXISTS] <tag_name> (<prop_name_list>) [, <tag_name> (<prop_name_list>), …] {VALUES | VALUE} VID: (<prop_value_list>[, <prop_value_list>])INSERT VERTEX t2 (name, age) VALUES “13”:(“n3”, 12), “14”:(“n4”, 8)在Nebula Graph实例的指定图空间中插入一个或多个点。
    DELETE VERTEXDELETE VERTEX <vid> [, <vid> …]DELETE VERTEX “team1”删除点,以及点关联的出边和入边。
    UPDATE VERTEX ON <tag_name> <vid> SET <update_prop> [WHEN <condition>] [YIELD <output>]UPDATE VERTEX ON player “player101” SET age = age + 2修改点上Tag的属性值。
    UPSERT VERTEXUPSERT VERTEX ON <tag> <vid> SET <update_prop> [WHEN <condition>] [YIELD <output>]UPSERT VERTEX ON player “player667” SET age = 31结合UPDATEINSERT,如果点存在,会修改点的属性值;如果点不存在,会插入新的点。

    边语句

    语句语法示例说明
    INSERT EDGEINSERT EDGE [IF NOT EXISTS] <edge_type> ( <prop_name_list> ) {VALUES | VALUE} <src_vid> -> <dst_vid>[@<rank>] : ( <prop_value_list> ) [, <src_vid> -> <dst_vid>[@<rank>] : ( <prop_value_list> ), …]INSERT EDGE e2 (name, age) VALUES “11”->”13”:(“n1”, 1)在Nebula Graph实例的指定图空间中插入一条或多条边。
    DELETE EDGE <edge_type> <src_vid> -> <dst_vid>[@<rank>] [, <src_vid> -> <dst_vid>[@<rank>] …]DELETE EDGE serve “player100” -> “team204”@0删除边。一次可以删除一条或多条边。
    UPDATE EDGEUPDATE EDGE ON <edge_type> <src_vid> -> <dst_vid> [@<rank>] SET <update_prop> [WHEN <condition>] [YIELD <output>]UPDATE EDGE ON serve “player100” -> “team204”@0 SET start_year = start_year + 1修改边上Edge type的属性。
    UPSERT EDGE ON <edge_type> <src_vid> -> <dst_vid> [@rank] SET <update_prop> [WHEN <condition>] [YIELD <properties>]UPSERT EDGE on serve “player666” -> “team200”@0 SET end_year = 2021结合UPDATEINSERT,如果边存在,会更新边的属性;如果边不存在,会插入新的边。
    • 原生索引

      语句语法示例说明
      CREATE INDEXCREATE {TAG | EDGE} INDEX [IF NOT EXISTS] <index_name> ON {<tag_name> | <edge_name>} ([<prop_name_list>]) [COMMENT = ‘<comment>’]CREATE TAG INDEX player_index on player()对Tag、EdgeType或其属性创建原生索引。
      SHOW CREATE {TAG | EDGE} INDEX <index_name>show create tag index index_2创建Tag或者Edge type时使用的nGQL语句,其中包含索引的详细信息,例如其关联的属性。
      SHOW INDEXESSHOW {TAG | EDGE} INDEXESSHOW TAG INDEXES列出当前图空间内的所有Tag和Edge type(包括属性)的索引。
      DESCRIBE {TAG | EDGE} INDEX <index_name>DESCRIBE TAG INDEX player_index_0查看指定索引的信息,包括索引的属性名称(Field)和数据类型(Type)。
      REBUILD INDEXREBUILD {TAG | EDGE} INDEX [<index_name_list>]REBUILD TAG INDEX single_person_index重建索引。索引功能不会自动对其创建之前已存在的存量数据生效。
      SHOW {TAG | EDGE} INDEX STATUSSHOW TAG INDEX STATUS查看索引名称和对应的状态。
      DROP INDEXDROP {TAG | EDGE} INDEX [IF EXISTS] <index_name>DROP TAG INDEX player_index_0删除当前图空间中已存在的索引。
    • 语法示例说明
      SIGN IN TEXT SERVICE [(<elastic_ip:port> [,<username>, <password>]), (<elastic_ip:port>), …]SIGN IN TEXT SERVICE (127.0.0.1:9200)Nebula Graph的全文索引是基于Elasticsearch实现,部署Elasticsearch集群之后,可以使用SIGN IN语句登录Elasticsearch客户端。
      SHOW TEXT SEARCH CLIENTSSHOW TEXT SEARCH CLIENTS列出文本搜索客户端。
      SIGN OUT TEXT SERVICESIGN OUT TEXT SERVICE退出所有文本搜索客户端。
      CREATE FULLTEXT {TAG | EDGE} INDEX <index_name> ON {<tag_name> | <edge_name>} ([<prop_name_list>])CREATE FULLTEXT TAG INDEX nebula_index_1 ON player(name)创建全文索引。
      SHOW FULLTEXT INDEXESSHOW FULLTEXT INDEXES显示全文索引。
      REBUILD FULLTEXT INDEXREBUILD FULLTEXT INDEX重建全文索引。
      DROP FULLTEXT INDEX <index_name>DROP FULLTEXT INDEX nebula_index_1删除全文索引。
      LOOKUP ON {<tag> | <edge_type>} WHERE <expression> [YIELD <return_list>]LOOKUP ON player WHERE FUZZY(player.name, “Tim Dunncan”, AUTO, OR) YIELD player.name使用查询选项。

    子图和路径

    类型语法示例说明
    子图GET SUBGRAPH [WITH PROP] [<step_count> STEPS] FROM {<vid>, <vid>…} [{IN | OUT | BOTH} <edge_type>, <edge_type>…] [YIELD [VERTICES AS <vertex_alias>] [,EDGES AS <edge_alias>]]GET SUBGRAPH 1 STEPS FROM “player100” YIELD VERTICES AS nodes, EDGES AS relationships指定Edge type的起始点可以到达的点和边的信息,返回子图信息。
    FIND { SHORTEST | ALL | NOLOOP } PATH [WITH PROP] FROM <vertex_id_list> TO <vertex_id_list><br/>OVER <edge_type_list> [REVERSELY | BIDIRECT] [<WHERE clause>] [UPTO <N> STEPS] [| ORDER BY $-.path] [| LIMIT <M>]FIND SHORTEST PATH FROM “player102” TO “team204” OVER *查找指定起始点和目的点之间的路径。返回的路径格式类似于(<vertex_id>)-[:<edge_type_name>@<rank>]->(<vertex_id)

    查询调优

    类型语法示例说明
    EXPLAIN [format=”row” | “dot”] <your_nGQL_statement>EXPLAIN format=”row” SHOW TAGS
    EXPLAIN format=”dot” SHOW TAGS
    输出nGQL语句的执行计划,但不会执行nGQL语句。
    PROFILEPROFILE [format=”row” | “dot”] <your_nGQL_statement>PROFILE format=”row” SHOW TAGS
    EXPLAIN format=”dot” SHOW TAGS
    执行nGQL语句,然后输出执行计划和执行概要。

    运维

    • BALANCE

      语法说明
      BALANCE DATA启动任务均衡分布Nebula Graph集群里的所有分片。该命令会返回任务ID(balance_id)。
      BALANCE DATA <balance_id>显示BALANCE DATA任务的状态。
      BALANCE DATA STOP停止BALANCE DATA任务。
      BALANCE DATA REMOVE <host_list>在Nebula Graph集群中扫描并解绑指定的Storage主机。
      BALANCE LEADER在Nebula Graph集群中均衡分布leader。
    • 语法说明
      SUBMIT JOB COMPACT触发RocksDB的长耗时compact操作。
      SUBMIT JOB FLUSH将内存中的RocksDB memfile写入硬盘。
      SUBMIT JOB STATS启动一个作业,该作业对当前图空间进行统计。作业完成后,用户可以使用SHOW STATS语句列出统计结果。
      SHOW JOB <job_id>显示当前图空间内指定作业和相关任务的信息。Meta服务将SUBMIT JOB请求解析为多个任务,然后分配给进程nebula-storaged。
      SHOW JOBS列出当前图空间内所有未过期的作业。
      STOP JOB停止当前图空间内未完成的作业。
      RECOVER JOB重新执行当前图空间内失败的作业,并返回已恢复的作业数量。
    • 语法示例说明
      KILL QUERY (session=<session_id>, plan=<plan_id>)KILL QUERY(SESSION=1625553545984255,PLAN=163)在一个会话中执行命令终止另一个会话中的查询。

    最后更新: November 2, 2021