HugeGraph 1.8.0 Release Notes
WIP: This doc is under construction, please wait for the final version (BETA)
运行环境/版本说明
- Java 运行环境:1.8.0 版 HugeGraph 组件(Server、PD、Store)统一要求 Java 17 运行与源码构建环境(1.7.0 是最后一个支持 Java 11 的版本)。
- 查询与脚本引擎:图遍历与查询框架升级至 Apache TinkerPop 3.8.1,脚本引擎统一升级至 Groovy 4.0.25。
升级与兼容性重点(Breaking Changes)
1. Gremlin 查询语法重要破坏性变更
- 移除
has(key, traversal)重载:Groovy 下旧写法在 HugeGraph 1.8 下会因强类型校验直接抛出Invalid data type of query value异常报错(纯 TinkerGraph 下会返回空结果)。简单条件直写谓词has('age', gt(30)),复杂过滤改用filter(__.values('age').is(gt(30)))。 - 移除
store()与带 Scope 的aggregate():全局贪心收集统一改用aggregate('x'),局部/逐对象收集改用local(__.aggregate('x'))。 - 无参
none()更名为discard():丢弃输入遍历必须使用discard()(避免与新集合过滤none(P)冲突)。 by()缺失属性严检:缺失属性在order().by()下直接过滤顶点,在project().by()下不再返回该 key,在path().by()下直接过滤路径;需保留缺失字段请在by()中显式使用coalesce()补默认值。choose()分支语义收敛:多条件重叠仅执行首个匹配分支;无匹配或属性缺失默认原样放行穿透(需过滤请显式加Pick.none/Pick.unproductive分支配合discard())。
完整改写代码对照与全量细则速查表请参阅:HugeGraph 1.8.0 Gremlin 迁移与兼容性指南。
2. 服务端配置与客户端兼容
- Serializer 类名迁移:
conf/gremlin-server.yaml中序列化器包路径由org.apache.tinkerpop.gremlin.driver.ser.*迁移至org.apache.tinkerpop.gremlin.util.ser.*。 - HugeGraph Client 1.5.0:服务端提供向后兼容适配,1.5.0 客户端常规 CRUD 与 Schema 操作可正常连通 1.8.0;但 Gremlin 查询因别名缺少 GraphSpace 前缀会执行失败,且鉴权路径变更,需升级客户端或改用 HTTP 接口。
- 不再默认捆绑 GPL word 分词器:因开源协议合规,默认发行包不再捆绑 GPLv3 的
word-1.3.jar。配置了search.text_analyzer=word的图仍受支持, 只需将word-1.3.jar放入 Server 的lib/目录即可正常使用;亦可切换为内置的 IK 或 SmartCN(注意切换分词器后需重建已有搜索索引)。
hugegraph
API Changes
- BREAKING CHANGE: Upgrade TinkerPop to 3.8.1 and require Java 17 runtime
- BREAKING CHANGE: Shared foundation module migration (
hugegraph-struct)
Feature Changes
- 支持 TinkerPop 3.8 步骤,包括
discard()、mergeV()、mergeE()以及日期步骤(datetime()、dateAdd()、dateDiff()) - Adapt HugeSecurityManager and Groovy 4.0.25 on Java 17
- Improve count query visibility inside uncommitted transactions