hugegraph属性解释

2022-04-25 00:00:00 索引 查询 支持 属性 顶点

示例一:
// Define schema
schema.propertyKey(“name”).asText().ifNotExist().create();
schema.propertyKey(“age”).asInt().ifNotExist().create();
schema.propertyKey(“city”).asText().ifNotExist().create();

schema.vertexLabel(“person”)
.properties(“name”, “age”, “city”)
.primaryKeys(“name”)
.nullableKeys(“age”, “city”)
.ifNotExist()
.create();

properties:通过 properties(…) 方法设置过的属性,默认全都是不可为空的,也就是在创建顶点时该属性必须赋值
primaryKeys: PrimaryKey 则允许用户从 VertexLabel 的属性中选择若干主属性作为区分的依据,HugeGraph 内部会根据主属性的值拼接生成 Id。idStrategy 默认使用 Automatic的,但如果用户没有显式设置 idStrategy 又调用了 primaryKeys(…) 方法设置了主属性,则 idStrategy 将自动使用 PrimaryKey
nullableKeys(String… properties):为避免这样的强约束,用户可以通过 本方法设置若干属性为可空的,这样添加顶点时该属性可以不赋值。
注意:primaryKeys 和 nullableKeys 不能有交集,因为一个属性不能既作为主属性,又是可空的

enableLabelIndex: 用户可以指定是否需要为label创建索引。不创建则无法全局搜索指定label的顶点和边,创建则可以全局搜索,做类似于g.V().hasLabel(‘person’), g.E().has(‘label’, ‘person’)这样的查询, 但是插入数据时性能上会更加慢,并且需要占用更多的存储空间。此项默认为 true

frequency: 字面意思是频率,表示在两个具体的顶点间某个关系出现的次数,可以是单次(single)或多次(frequency),默认为single

sortKeys: 当 EdgeLabel 的 frequency 为 multiple 时,需要某些属性来区分这多次的关系,故引入了 sortKeys(排序键);

注意: sortKeys 和 nullableKeys也不能有交集

注意:当frequency为multiple时必须要设置sortKeys对应属性类型的值

schema.edgeLabel("knows").link("person", "person").properties("date").ifNotExist().create();
schema.edgeLabel("created").multiTimes().link("person", "software").properties("date").sortKeys("date").ifNotExist().create();
1
2
indexType

Secondary
支持匹配的二级索引,允许建立联合索引,联合索引支持索引前缀搜索
单个属性: 支持相等查询,比如:person顶点的city属性的二级索引,可以用g.V().has(“city”, “北京”)查询"city属性值是北京"的全部顶点
联合索引: 支持前缀查询和相等查询,比如:person顶点的city和street属性的联合索引,可以用g.V().has (“city”, “北京”).has(‘street’, ‘中关村街道’)查询"city属性值是北京且street属性值是中关村"的全部顶点,或者g.V() .has(“city”, “北京”)查询"city属性值是北京"的全部顶点
secondary index的查询都是基于"是"或者"相等"的查询条件,不支持"部分匹配"

Range
支持数值类型的范围查询
必须是单个数字或者日期属性,比如:person顶点的age属性的范围索引,可以用g.V().has(“age”, P.gt(18))查询"age属性值大于18"的顶点。除了P.gt()以外,还支持P.gte(), P.lte(), P.lt(), P.eq(), P.between(), P.inside()和P.outside()等

Search
支持全文检索的索引
必须是单个文本属性,比如:person顶点的address属性的全文索引,可以用g.V().has(“address”, Text .contains(‘大厦’)查询"address属性中包含大厦"的全部顶点
search index的查询是基于"是"或者"包含"的查询条件

Shard
支持前缀匹配 + 数字范围查询的索引
N个属性的分片索引,支持前缀相等情况下的范围查询,比如:person顶点的city和age属性的分片索引,可以用g.V().has (“city”, “北京”).has(“age”, P.between(18, 30))查询"city属性是北京且年龄大于等于18小于30"的全部顶点
shard index N个属性全是文本属性时,等价于secondary index
shard index只有单个数字或者日期属性时,等价于range index
shard index可以有任意数字或者日期属性,但是查询时多只能提供一个范围查找条件,且该范围查找条件的属性的前缀属性都是相等查询条件

Unique
支持属性值性约束,即可以限定属性的值不重复,允许联合索引,但不支持查询
单个或者多个属性的性索引,不可用来查询,只可对属性的值进行限定,当出现重复值时将报错
————————————————
版权声明:本文为CSDN博主「lingxingzhang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/guajidai0165/article/details/106996045

相关文章