图数据库 HugeGraph : IndexLabel

IndexLabel 用来定义索引类型,描述索引的约束信息,主要是为了方便查询。

IndexLabel 允许定义的约束信息包括:name、baseType、baseValue、indexFeilds、indexType,下面逐一介绍。

  • name: 属性的名字,用来区分不同的 IndexLabel,不允许有同名的属性;
interfaceparammust set
indexLabel(String name)namey
  • baseType: 表示要为 VertexLabel 还是 EdgeLabel 建立索引, 与下面的 baseValue 配合使用;

  • baseValue: 指定要建立索引的 VertexLabel 或 EdgeLabel 的名称;

interfaceparamdescription
onV(String baseValue)baseValuebuild index for VertexLabel: 'baseValue'
onE(String baseValue)baseValuebuild index for EdgeLabel: 'baseValue'
  • indexFeilds: 要在哪些属性上建立索引,可以是为多列建立联合索引;
interfaceparamdescription
by(String... fields)filesallow to build index for multi fields for secondary index
  • indexType: 建立的索引类型,目前支持五种,即 Secondary、Range、Search、Shard 和 Unique。
    • 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 支持属性值唯一性约束,即可以限定属性的值不重复,允许联合索引,但不支持查询
      • 单个或者多个属性的唯一性索引,不可用来查询,只可对属性的值进行限定,当出现重复值时将报错
interfaceindexTypedescription
secondary()Secondarysupport prefix search
range()Rangesupport range(numeric or date type) search
search()Searchsupport full text search
shard()Shardsupport prefix + range(numeric or date type) search
unique()Uniquesupport unique props value, not support search

2.5.2 创建 IndexLabel

schema.indexLabel("personByAge").onV("person").by("age").range().ifNotExist().create();
schema.indexLabel("createdByDate").onE("created").by("date").secondary().ifNotExist().create();
schema.indexLabel("personByLived").onE("person").by("lived").search().ifNotExist().create();
schema.indexLabel("personByCityAndAge").onV("person").by("city", "age").shard().ifNotExist().create();
schema.indexLabel("personById").onV("person").by("id").unique().ifNotExist().create();

2.5.3 删除 IndexLabel

schema.indexLabel("personByAge").remove()

2.5.4 查询 IndexLabel

// 获取IndexLabel对象
schema.getIndexLabel("personByAge")// 获取property key属性
schema.getIndexLabel("personByAge").baseType()
schema.getIndexLabel("personByAge").baseValue()
schema.getIndexLabel("personByAge").indexFields()
schema.getIndexLabel("personByAge").indexType()
schema.getIndexLabel("personByAge").name()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

boost常用库

1.boost::any boost::any是一种通用的数据类型&#xff0c;可以将各种类型包装后统一放入容器内&#xff0c;最重要的它是类型安全的。有点象COM里面的variant。 使用方法&#xff1a; any::type() 返回包装的类型 any_cast可用于any到其他类型的转化 #include <boost/any.h…

HugeGraphServer 部署安装

官方文档链接&#xff1a;https://hugegraph.github.io/hugegraph-doc HugeGraphServer Quick Start 1 概述 HugeGraph-Server 是 HugeGraph 项目的核心部分&#xff0c;包含Core、Backend、API等子模块。 Core模块是Tinkerpop接口的实现&#xff0c;Backend模块用于管理数…

java中调用System.currentTimeMillis()获取当前时间来求出时间差及程序执行的时间

package com.test;import java.util.Scanner; //String的连接1000次 class StringOperate{private String str;public long doWork(){long beginSystem.currentTimeMillis();//开始时间setStr(null);for(int i0;i<10000;i){setStr(getStr() i);}long endSystem.currentTime…

HugeGraph 多图配置

多图配置 我们的系统是可以存在多个图的&#xff0c;并且各个图的后端可以不一样&#xff0c;比如图 hugegraph 和 hugegraph1&#xff0c;其中 hugegraph 以 cassandra 作为后端&#xff0c;hugegraph1 以 rocksdb作为后端。 配置方法也很简单&#xff1a; 修改 gremlin-se…

JanusGraph: 可视化 Gephi 插件安装

下载地址 https://gephi.org/ 安装 下一步默认安装即可 打开安装插件 打开后发现提示无法连接&#xff0c;并且可用插件显示为0 &#xff08;我更新过所以不为0&#xff09; 点击“代理配置” 设置代理 安装插件 Graph Streaming 继续 重新启动&#xff0c;安装完成 点击概…

【Boost】Boost使用几条简单笔记

头文件就是库 使用者最常问的问题就是“我该怎么安装Boost”&#xff0c;这个也是我一开始最关心的问题&#xff0c;Boost这点做的很好&#xff0c;将大部分实现都封装在头文件里&#xff0c;所以对于一些基本的Boost库&#xff0c;其实是不需要安装的&#xff0c;只需要将头文…

分析模板方法设计模式

首先来看看用来比较int和String分别进行1000次运算求需要的时间进行比较&#xff0c;代码的实现&#xff1a; package com.test;import java.util.Scanner; //String的连接1000次 class StringOperate{private String str;public long doWork(){long beginSystem.currentTimeM…

JanusGraph(HugeGraph通用): 可视化 GraphEXP 插件安装

JanusGraph&#xff1a; 可视化 Gephi 插件安装可参考&#xff1a;https://datamining.blog.csdn.net/article/details/103894994 下载地址&#xff1a;https://github.com/bricaud/graphexp 安装 解压&#xff0c;在根目录下修改 graphexp.html <div class"nav inp…

java中的接口的定义以及实现关系

一、什么是接口&#xff1f; - 硬件接口&#xff1a;设备之间的连接方式 - 软件接口&#xff1a;程序代码&#xff0c;特殊的类&#xff0c;表示一种规范&#xff0c;是具有N个方法的特征集合。 java中的接口&#xff1a; 专家说的多个抽象类的抽象就是接口。 interface …

迁移 Cloudera Manager 节点 ,迁移Cloudera Scm Server端

目录 1.迁移节点信息&#xff1a;212 -> 44 2.压缩存储目录&#xff0c;备份SCM Server数据 3.在新服务器安装server端 4.修改 cloudera-scm-server 配置文件 5.解压恢复备份数据到新服务器指定配置的目录中 6.修改所有agent节点的配置文件内容 7.迁移ClouderaManage…

CM,CDH 修改迁移元数据库

目录 1.停止所有服务 2.停止Cloudera Management Service服务 3.登录CM所在服务器&#xff0c;停止cloudera-scm-server服务&#xff0c;命令如下&#xff1a; 4.停止CM服务和CDH集群后&#xff0c;对数据库进行迁移 5.登录cloudera-scm-server服务所在服务器&#xff0c;…

面向接口编程思想

package com.test; /*面向接口编程&#xff1a;多态的好处&#xff1a;把实现类对象赋给接口类型变量&#xff0c;屏蔽了不同实现类之间的差异&#xff0c;从而可以做到通用编程 案例&#xff1a;使用USB设备来工作。*/ //指定USB规范 interface IUSB{void swapData(); } class…

Cloudera-Manager-agent 误删恢复

场景&#xff1a; 同事操作失误&#xff0c;将agent节点误删了 解决方法 1.对比正常agent节点与被删除节点安装包差异 yum list installed |grep cloudera 2.通过和正常的服务器对比我们发现&#xff0c;丢失的只有cloudera-manager-agent.x86_64 3.查看yum源中所有clouder…

java中的内部类

内部类&#xff1a;定义在类结构中的另一个类&#xff1a; 类中的定义的成员&#xff1a;字段、方法、内部类 为什么使用内部类&#xff1f; 增强封装&#xff0c;把内部类隐藏在外部类之内&#xff0c;不许其他类访问该类。内部类能提高代码的可读性和可维护性&#xff0c;…

JanusGraph 安装

下载地址&#xff1a;https://github.com/JanusGraph/janusgraph/releases/ 版本&#xff1a;Version 0.3.2 (June 16, 2019) 安装 解压 janusgraph-0.3.2-hadoop2.zip 文件 janusgraph单机版安装 注&#xff1a;本次安装janusgraph基于es和hbse&#xff0c;所以先安装es和…

java中枚举类型详解

枚举类型的引入&#xff1a; 枚举是从java5开始提供的一种新的数据类型&#xff0c;是一个特殊的类&#xff0c;就是固定的多个常量对象的集合。 定义格式&#xff1a; [修饰]enum 枚举类名 { 常量A,常量B,常量C; } 代码&#xff1a; package com.test;enum Weekday {…

Hbase 预写日志WAL处理源码分析之 LogCleaner

目录 Hlog WALs和oldWALs 整体流程 HMaster 初始化 定时执行 LogCleaner 日志清理类 ReplicationLogCleaner 日志清理类 总结 Hlog WALs和oldWALs 这里先介绍一下Hlog失效和Hlog删除的规则 HLog失效&#xff1a;写入数据一旦从MemStore中刷新到磁盘&#xff0c;…

开发者都应该使用的10个C++11特性

摘要 在C11新标准中&#xff0c;语言本身和标准库都增加了很多新内容&#xff0c;本文只涉及了一些皮毛。不过我相信这些新特性当中有一些&#xff0c;应该成为所有C开发者的常规装备。你也许看到过许多类似介绍各种C11特性的文章。下面是我总结的&#xff0c;C开发者都需要学习…

Java8新特性:CompletableFuture 方法介绍

目录 1. runAsync 和 supplyAsync方法 2. whenComplete、whenCompleteAsync、exceptionally 3. thenApply 、 handle thenApply handle 4.thenAccept 、thenRun 方法 消费处理结果 thenAccept thenRun 5. thenCombine 、 thenAcceptBoth thenCombine thenAcceptBot…