購買GDB與ES實例后,需要在GDB實例中注冊ES信息。

  1. 登錄ECS實例,具體請參見連接方式概述ECS遠程連接操作指南
  2. 注冊并查看ES信息。
    1. 執行如下命令,在GDB中注冊ES信息。
      curl -u ${username}:${password} 
      "http://${your-gdb-endpoint}:8182/controller/es/updateEsService?endpoint=${your-es-endpoint}&port=${your-es-port}&username=${your-es-username}&password=${your-es-password}"
      • ${username}改為您的圖數據庫GDB實例的用戶名。
      • ${password}改為您的圖數據庫GDB實例的密碼。
      • ${your-gdb-endpoint}改為您的圖數據庫GDB實例的域名,如果您用外網訪問的方式,下面的8182端口要替換為3734。
      • ${your-es-endpoint}替換為您的ES實例的域名。
      • ${your-es-port}改為您的ElasticSearch實例的端口,默認端口應為9200。
      • ${your-es-username}改為你的ElasticSearch實例的用戶名,默認名應為elastic。
      • ${your-es-password}改為您的ElasticSearch實例的密碼。
      • 您在指定每個字段的時候,不要傳入空格,否則語句將無法執行,且無任何返回值。
    2. 執行如下命令,查看注冊ES信息。

      您的ES賬號的密碼已經被加密存儲。

      curl -u ${username}:${password} "http://${your-gdb-endpoint}:8182/controller/es/getEsService"
    3. 查看與ES連接的狀態。

      在導入數據之前,一定要執行這一步,這個主要是通過connectStatus字段觀察配置的信息,具體返回的信息,以及對應狀態的含義可以參考附表。

      curl -u ${username}:${password} 
      "http://${your-gdb-endpoint}:8182/controller/es/getMonitor"
  3. 注冊并查看同步字段信息。
    • 指定同步字段。

      在你第一次使用ES服務的時候,需要指定需要增量同步至ES的屬性字段,這樣可以減輕同步鏈路的負擔。

      • vertex-property替換為您數據集中點的屬性字段。
      • edge-property替換為您數據集中邊的屬性字段。
      • 指定的字段中不能包含 “,”號和“.”點,否則無法指定成功。
      • 不需要指定label的字段,其已經默認同步至ES中。
      • 如果您剛開始并不想指定字段,也需要運行該語句,要不然ES服務將不可用,您只需要在vertex與edge中不指定同步字段就好,即"vertex":[""],"edge"=[""]這樣的形式(雙引號內不要有空格),將會同步點邊屬性所有的字段至ES中,但是包含 “,”號和“.”點的屬性不會同步。
      • 只支持字符串類型的屬性同步至ES中,如果您的屬性的字段是非字符串類型,例如,整型、浮點型等,這些字段將不會同步至ES中,即使您指定了需要將該字段同步至ES中。
      • 您如果在使用GDB的服務中,想指定一個新的字段同步至ES中,您可以重新執行該操作,加入需要指定的字段即可,但是需要特別注意的是,本操作是覆蓋操作,因此您需要將以前指定的同步字段也一并寫入,還要注意該操作一定要在向GDB寫入數據之前,因為這樣可以確保您新添加的字段能夠正確的同步至ES中。
      curl -u ${username}:${password} -H  "Content-Type: application/json" -X POST --data '
      {"vertex":["${vertex-property1}","${vertex-property2}"],
      "edge":["${edge-property1}","${edge-property2}"]
      }' "http://${your-gdb-endpoint}:8182/controller/es/setField"
    • 查看指定同步字段。

      可以查看點邊指定的導入字段,如果發現指定字段錯誤,可以重新指定需要導入的字段。

      curl -u ${username}:${password} "http://${your-gdb-endpoint}:8182/controller/es/getField"
      返回結果如下:
      • vertex表示點屬性同步至ES中的字段。
      • edge表示邊屬性同步至ES中的字段。
      {"payload":"{\"edge\":[\"weight\",\"desc\"],\"vertex\":[\"value\",\"name\",\"age\",\"location\"]}","status":"200 OK"}%
  4. 開啟同步,將GDB數據增量同步至ES中。

    如果您配置完ES的信息,并指定完點邊需要導入的字段后,您就可以通過以下命令將GDB的數據增量同步至ES中了。

    curl -u ${username}:${password} "http://${your-gdb-endpoint}:8182/controller/es/beginSync"
  5. 查看點和邊在ES中的index取值。
    該步驟不是必要的步驟,如果您只是想使用GDB+ES,不關注數據在ES中的存儲,這一步驟可以跳過。但您想在ES中查詢數據同步的情況,這一步又是必須的。
    curl -u ${username}:${password} "http://${your-gdb-endpoint}:8182/controller/es/getEsIndex"
    返回結果如下:
    • gdbVertex表示點數據在ES中index的取值。
    • gdbEdge表示邊數據在ES中index的取值。
    {"payload":"{\"gdbEdge\":\"gdb_edge_cvkbdqcl\",\"gdbVertex\":\"gdb_vertex_cvkbdqcl\"}","status":"200 OK"}
  6. 查看同步鏈路的狀態。
    通過以下命令,可以查看GDB同步至ES中數據鏈路的狀態。
    curl -u ${username}:${password} "http://${your-gdb-endpoint}:8182/controller/es/getSyncStatus"