图数据库 --- > hugegraph (三)

我是研究僧i 提交于 2020-01-18 23:32:34

安装遇到的问题

作为服务器时stutio的设置

studio.server.port=8088
studio.server.host=0.0.0.0 // 设置为0.0.0.0在外部可以正常访问

graph.server.host=127.0.0.1
graph.server.port=8080
graph.name=hugegraph  //hugegraph不变,不需要与启动服务器建立的图名称(存储文件夹名)一致

load 文件报错

事先已建立scheme,应该重设图名,然后初始化存储./bin/init-store.sh,进而重启服务

索引

IndexLabel

IndexLabel 用来定义索引类型,描述索引的约束信息,主要是为了方便查询。
允许定义的约束信息包括:name、baseType、baseValue、indexFeilds、indexType

  • name
    属性的名字,用来区分不同的 IndexLabel,不允许有同名的属性;indexLabel(String name)
  • baseType
    表示要为 VertexLabel 还是 EdgeLabel 建立索引, 与下面的 baseValue 配合使用;
  • baseValue
    指定要建立索引的 VertexLabel 或 EdgeLabel 的名称 onV(String baseValue)
  • indexFeilds
    要在哪些属性上建立索引,可以是为多列建立联合索引;by(String... fields)
  • 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
    hard index可以有任意数字或者日期属性,但是查询时最多只能提供一个范围查找条件,且该范围查找条件的属性的前缀属性都是相等查询条件
    • Unique
      支持属性值唯一性约束,即可以限定属性的值不重复,允许联合索引,但不支持查询
      单个或者多个属性的唯一性索引,不可用来查询,只可对属性的值进行限定,当出现重复值时将报错
      接口
secondary()
range()
search()
shard()
unique()

例子

  • 创建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();
  • 删除IndexLabel
schema.indexLabel("personByAge").remove()
  • 查询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()

ref:

  1. https://blog.csdn.net/gobitan/article/details/86974625

  2. https://segmentfault.com/a/1190000018046191

  3. 分别下载hugegraph-studio-0.8.0 和hugegraph-0.8.0

  4. 对hugegraph:首先执行 ./bin/init-store.sh
    然后执行 ./.bin/start-hugegraph.sh

  5. 对于hugegraph-studio:执行 ./bin/hugegraph-studio.sh
    注意:
    对于mac, 确定使用时保证可用物理内存>512M

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!