简要介绍

说明

该功能不再维护更新,建议不要再使用该功能。业务方保持以前使用ES的方式不变,有全文检索的需求直接访问ES即可。

图数据库GDB深度融合Elasticsearch(ES),使得GDB具备了分词检索、模糊匹配、正则表达式查询的能力,且GDB内核集成了数据增量同步至ES中的服务,保证GDB与ES数据的强一致性。本文介绍使用GDB+ES的全文索引服务的方法。

背景介绍

如果您想使用GDB+ES的全文索引服务,建议您购买新的GDB实例,因为目前GDB数据仅支持增量同步至ES中。

当您已经在使用GDB实例,也想使用GDB+ES的全文索引服务,您需要进行以下步骤:

  1. 将您的GDB实例升级到最新的版本。

  2. 需要将您GDB中数据删除。

  3. 购买ES服务并在GDB中注册ES信息。

  4. 重新导入数据。

当然,您如果只想对部分数据进行全文索引,那么您也可以只删除部分数据,然后重新导入需要全文索引的数据即可。但是,需要注意的是,GDB数据增量同步至ES对这种形式的支持还不是很友好,建议您购买新的实例。

GDB全文搜索的数据模型

点模型

{
  "id": "Vertex Id",
  "label": [List of Labels type],
  "type": "vertex/edge"
  "predicates": {
    "Property name": [
      {
        "value": "Property Value1",
      },
      {
        "value": "Property Value2"
      }
    ]
  }
}
  • id:文档的实体唯一ID。

  • label:点或边的一个或多个标签。

  • type:用于指定当前文档表示点或边。

  • predicates:对于Gremlin,存储点或边的属性键值,比如name字段在ES中存储为predicates.name.value的形式。

  • value:存储属性值,支持GDB中的set属性。

边模型

{
  "id": "Vertex Id/Edge Id",
  "label": [List of Labels type],
  "type": "vertex/edge"
   "toId": "入边id",
   "toLabel": "入边label",
   "fromId": "出边id",
   "fromLabel":"出边label",
   "predicates": {
    "Property name": [
      {
        "value": "Property Value",
      },
      {
        "value": "Property Value2",
      }
    ]
  }
}  

GDB+ES使用流程

  1. 查看前提条件,购买GDB与ES实例。

  2. 查看GDB中配置ES信息,将ES实例信息注入GDB。

  3. 查看GDB+ES的DSL编写范例,选择合适的查询方式进行查询。