blob: 95ae3ae90b94a83b6260e4976c2585a12de43af0 [file] [log] [blame]
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="generator" content="Hugo 0.95.0" />
<link rel="canonical" type="text/html" href="/docs/">
<link rel="alternate" type="application/rss&#43;xml" href="/docs/index.xml">
<meta name="robots" content="noindex, nofollow">
<link rel="shortcut icon" href="/favicons/favicon.ico" >
<link rel="apple-touch-icon" href="/favicons/apple-touch-icon-180x180.png" sizes="180x180">
<link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
<link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="/favicons/android-36x36.png" sizes="36x36">
<link rel="icon" type="image/png" href="/favicons/android-48x48.png" sizes="48x48">
<link rel="icon" type="image/png" href="/favicons/android-72x72.png" sizes="72x72">
<link rel="icon" type="image/png" href="/favicons/android-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="/favicons/android-144x144.png" sizes="144x144">
<link rel="icon" type="image/png" href="/favicons/android-192x192.png" sizes="192x192">
<title>Documentation | HugeGraph</title>
<meta name="description" content="Welcome to HugeGraph docs
">
<meta property="og:title" content="Documentation" />
<meta property="og:description" content="Apache HugeGraph site" />
<meta property="og:type" content="website" />
<meta property="og:url" content="/docs/" /><meta property="og:site_name" content="HugeGraph" />
<meta itemprop="name" content="Documentation">
<meta itemprop="description" content="Apache HugeGraph site"><meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Documentation"/>
<meta name="twitter:description" content="Apache HugeGraph site"/>
<link rel="preload" href="/scss/main.min.0dc89c707c94a8edbf7722b8ffab87c78b14c4c3e2532e1f45bd6d12c3ccf83b.css" as="style">
<link href="/scss/main.min.0dc89c707c94a8edbf7722b8ffab87c78b14c4c3e2532e1f45bd6d12c3ccf83b.css" rel="stylesheet" integrity="">
<script
src="https://code.jquery.com/jquery-3.5.1.min.js"
integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="
crossorigin="anonymous"></script>
<link rel="stylesheet" href="/css/prism.css"/>
<script type="application/javascript">
var doNotTrack = false;
if (!doNotTrack) {
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', 'UA-00000000-0', 'auto');
ga('send', 'pageview');
}
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>
</head>
<body class="td-section">
<header>
<nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar">
<a class="navbar-brand" href="/">
<span class="navbar-logo"><svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 16 16"><defs><style>.cls-1{fill:none;stroke:#fff;stroke-miterlimit:10;stroke-width:.5px;opacity:.3}.cls-2{fill:#229efa}.cls-3{fill:#9948f7}.cls-4{fill:#33bc7a}.cls-5{fill:url(#未命名的渐变_3)}.cls-6{fill:url(#未命名的渐变_13)}.cls-7{fill:url(#未命名的渐变_11)}</style><linearGradient id="未命名的渐变_3" x1="6.16" y1="14.63" x2="6.16" y2="6.01" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#2e3192"/><stop offset="0" stop-color="#229efa"/><stop offset=".44" stop-color="#239cf8"/><stop offset=".6" stop-color="#2795f2"/><stop offset=".71" stop-color="#2d8ae8"/><stop offset=".81" stop-color="#3679d9"/><stop offset=".89" stop-color="#4263c6"/><stop offset=".95" stop-color="#5048af"/><stop offset="1" stop-color="#5c319b"/></linearGradient><linearGradient id="未命名的渐变_13" x1="10.75" y1="8.2" x2="4.49" y2="1.94" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#991146"/><stop offset="0" stop-color="#326b4e"/><stop offset=".02" stop-color="#3a685c"/><stop offset=".07" stop-color="#506180"/><stop offset=".13" stop-color="#645aa0"/><stop offset=".19" stop-color="#7554bc"/><stop offset=".26" stop-color="#8250d2"/><stop offset=".35" stop-color="#8d4ce3"/><stop offset=".45" stop-color="#944aee"/><stop offset=".6" stop-color="#9848f5"/><stop offset="1" stop-color="#9948f7"/></linearGradient><linearGradient id="未命名的渐变_11" x1="15.34" y1="6.67" x2="7.88" y2="10.98" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#33bc7a"/><stop offset=".45" stop-color="#32ba7a"/><stop offset=".61" stop-color="#2fb37c"/><stop offset=".73" stop-color="#29a87e"/><stop offset=".82" stop-color="#219782"/><stop offset=".9" stop-color="#168186"/><stop offset=".97" stop-color="#09668b"/><stop offset="1" stop-color="#03598e"/></linearGradient></defs><title>logo</title><rect class="cls-1" x="-143.14" y="-373.46" width="597.8" height="424.44"/><circle class="cls-2" cx="12.02" cy="1.83" r="1.33"/><circle class="cls-3" cx="12.02" cy="14.17" r="1.33"/><circle class="cls-4" cx="1.33" cy="8" r="1.33"/><path class="cls-5" d="M7.91 10h0a2.65 2.65.0 01-.23-3.74A1.75 1.75.0 017.91 6h0A2.66 2.66.0 014.4 6h0a1.81 1.81.0 01.24.24A2.65 2.65.0 014.4 10h0a2.62 2.62.0 00-.89 2 2.65 2.65.0 104.4-2z"/><path class="cls-6" d="M12.19 5.49a2.78 2.78.0 01-.5.11A2.64 2.64.0 018.76 3.5h0a2.65 2.65.0 10-2.6 3.17A2.6 2.6.0 007 6.53H7a2.65 2.65.0 013.44 2 2.94 2.94.0 010-.51 2.65 2.65.0 011.75-2.53z"/><path class="cls-7" d="M13 5.35a2.64 2.64.0 00-2.59 2.12h0a3 3 0 01-.08.32A2.65 2.65.0 017.54 9.58a2.86 2.86.0 00.37.41h0a2.63 2.63.0 01.9 2 2.84 2.84.0 01-.05.51 2.64 2.64.0 013.12-2.06l.32.08h0a2.6 2.6.0 00.84.14 2.65 2.65.0 100-5.3z"/></svg></span><span class="font-weight-bold">HugeGraph</span>
</a>
<div class="td-navbar-nav-scroll ml-md-auto" id="main_navbar">
<ul class="navbar-nav mt-2 mt-lg-0">
<li class="nav-item mr-4 mb-2 mb-lg-0">
<a class="nav-link active" href="/docs/" ><i class='fas fa-book pr-2'></i><span class="active">Documentation</span></a>
</li>
<li class="nav-item mr-4 mb-2 mb-lg-0">
<a class="nav-link" href="https://github.com/apache/incubator-hugegraph" target="_blank" ><i class='fab fa-github pr-2'></i><span>GitHub</span></a>
</li>
<li class="nav-item mr-4 mb-2 mb-lg-0">
<a class="nav-link" href="/community/" ><span>Community</span></a>
</li>
<li class="nav-item dropdown mr-4 d-none d-lg-block">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
English
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
<a class="dropdown-item" href="/cn/docs/">中文</a>
</div>
</li>
</ul>
</div>
<div class="navbar-nav d-none d-lg-block"></div>
</nav>
</header>
<div class="container-fluid td-outer">
<div class="td-main">
<div class="row flex-xl-nowrap">
<main class="col-12 col-md-9 col-xl-8 pl-md-5" role="main">
<div class="td-content">
<div class="pageinfo pageinfo-primary d-print-none">
<p>
This is the multi-page printable view of this section.
<a href="#" onclick="print();return false;">Click here to print</a>.
</p><p>
<a href="/docs/">Return to the regular view of this page</a>.
</p>
</div>
<h1 class="title">Documentation</h1>
<ul>
<li>1: <a href="#pg-7dd24b6126e5b249f96de862bfc51025">Introduction with HugeGraph</a></li>
<li>2: <a href="#pg-64d47cfe1880443239e7c31f8fd1ac1a">Download HugeGraph</a></li>
<li>3: <a href="#pg-08b1b69f6319108b0455d24614fdd660">Quick Start</a></li>
<ul>
<li>3.1: <a href="#pg-8ec2ee5fd8ff8e48255d55eab65d92b6">HugeGraph-Server Quick Start</a></li>
<li>3.2: <a href="#pg-685a02f8811d86f1ce195d7c73d9ea44">HugeGraph-Loader Quick Start</a></li>
<li>3.3: <a href="#pg-06d4cae527789fcda01ebf4e48c6559f">HugeGraph-Tools Quick Start</a></li>
<li>3.4: <a href="#pg-751ed124ec6dbb96d5e65c62dc9d4e85">HugeGraph-Hubble Quick Start</a></li>
<li>3.5: <a href="#pg-9cbf1b01e876dc8cdc2da1c17759eed3">HugeGraph-Client Quick Start</a></li>
</ul>
<li>4: <a href="#pg-5074334c73aa450364a31470231ebff8">Config</a></li>
<ul>
<li>4.1: <a href="#pg-af7e8f1dc385b255c4f38b3cbafe224a">HugeGraph 配置</a></li>
<li>4.2: <a href="#pg-6bfbb2db4e1f281942d741cef305e724">HugeGraph 配置项</a></li>
<li>4.3: <a href="#pg-7d189549d4201521c83e0d93a2474a2d">HugeGraph 内置用户权限与扩展权限配置及使用</a></li>
<li>4.4: <a href="#pg-7e400260398a18d0be72b1fe5a73f419">配置 HugeGraphServer 使用 https 协议</a></li>
</ul>
<li>5: <a href="#pg-8f8368cdf9ec684d30761c6d28a34179">API</a></li>
<ul>
<li>5.1: <a href="#pg-a809bf70d5493b5046619919800e4de6">HugeGraph RESTful API</a></li>
<ul>
<li>5.1.1: <a href="#pg-698c3217de07a8cb0dc0e93dbae29ee9">Schema API</a></li>
<li>5.1.2: <a href="#pg-f7f4b3b6f4b7a965f8c30675df8e56f8">PropertyKey API</a></li>
<li>5.1.3: <a href="#pg-28cb205879be97a55ddc8cd365c4438e">VertexLabel API</a></li>
<li>5.1.4: <a href="#pg-41864d99c39fc7040549f6eaf5441daf">EdgeLabel API</a></li>
<li>5.1.5: <a href="#pg-7099742fb947ad5dfde9e72216c10b8a">IndexLabel API</a></li>
<li>5.1.6: <a href="#pg-bde129922f801ad9560757fcec64d05c">Rebuild API</a></li>
<li>5.1.7: <a href="#pg-86bf520fd6b098231f4af6590328e871">Vertex API</a></li>
<li>5.1.8: <a href="#pg-f40127b155ddd802d50c507ff1cf5530">Edge API</a></li>
<li>5.1.9: <a href="#pg-f0adc653be0b454ce1952bdaf0afefa6">Traverser API</a></li>
<li>5.1.10: <a href="#pg-ced5167413a6606a537e40b18f6fec3e">Rank API</a></li>
<li>5.1.11: <a href="#pg-32aff6fa72d51caa846c2a72e5771c5d">Variable API</a></li>
<li>5.1.12: <a href="#pg-3d75cf337650cd90a617c3ef7e9dca87">Graphs API</a></li>
<li>5.1.13: <a href="#pg-d9de752e44e3a8a709d187e4101fd818">Task API</a></li>
<li>5.1.14: <a href="#pg-e84b0f106294b580ca64918b72cc71d1">Gremlin API</a></li>
<li>5.1.15: <a href="#pg-a3b125f257052209fcb98300d5c066a7">Authentication API</a></li>
<li>5.1.16: <a href="#pg-8e126d4f2f7317a1268d7edb65cd4fcc">Other API</a></li>
</ul>
<li>5.2: <a href="#pg-3457a7585a93814fdbb1a44b68edc0d3">HugeGraph Java Client</a></li>
<li>5.3: <a href="#pg-1ebf9ecb86d8a6b8536fd581e696ce8c">Gremlin-Console</a></li>
</ul>
<li>6: <a href="#pg-d2c6535126cca927d2a9c893abde92a0">GUIDES</a></li>
<ul>
<li>6.1: <a href="#pg-dcb89d888ea6f4146ace522d76fe2776">HugeGraph Architecture Overview</a></li>
<li>6.2: <a href="#pg-3d0f9ef831ef5d7d11acfb09140359fa">HugeGraph Design Concepts</a></li>
<li>6.3: <a href="#pg-96a920d19e01666d95eded506d502ab4">HugeGraph Plugin机制及插件扩展流程</a></li>
<li>6.4: <a href="#pg-2c9db416c8d78f898d52c91ec12535d4">Backup Restore</a></li>
<li>6.5: <a href="#pg-3465b699399f48689cdc6b5e59a10d69">FAQ</a></li>
</ul>
<li>7: <a href="#pg-3ed7a32fc6a58bb9d03dcd00dc874ba8">QUERY LANGUAGE</a></li>
<ul>
<li>7.1: <a href="#pg-2696905b5b6cbdf2ad7f78085bd6baa9">HugeGraph Gremlin</a></li>
<li>7.2: <a href="#pg-29164f631ea2ad7e883c0ba00a843508">HugeGraph Examples</a></li>
</ul>
<li>8: <a href="#pg-f0a22a813c843322c0d360d952e434ce">PERFORMANCE</a></li>
<ul>
<li>8.1: <a href="#pg-63f6d63db3ee3a5270fc1ca0a0c0e181">HugeGraph BenchMark Performance</a></li>
<li>8.2: <a href="#pg-699ebe5daed825049424b7539aad30f9">HugeGraph-API Performance</a></li>
<ul>
<li>8.2.1: <a href="#pg-dbfafc29a5e930415f78f72c47ee67f2">v0.5.6 Stand-alone(RocksDB)</a></li>
<li>8.2.2: <a href="#pg-fd5b165e28a07f1c35ab177b10e15dc8">v0.5.6 Cluster(Cassandra)</a></li>
<li>8.2.3: <a href="#pg-0005aca20e30ef2795411939ccbf0fd9">v0.4.4</a></li>
<li>8.2.4: <a href="#pg-d4233a3feb070643ef5d54a6f9c12cab">v0.2</a></li>
</ul>
<li>8.3: <a href="#pg-8e73cd18ae7e460700391440de46c404">HugeGraph-Loader Performance</a></li>
<li>8.4: <a href="#pg-0b6ebbdbce17d47f26fcb874226e5edc"></a></li>
</ul>
<li>9: <a href="#pg-99a93ef9534d11fef4be3e4b3b1a6381">Contribution Guidelines</a></li>
<ul>
<li>9.1: <a href="#pg-17ea1d6a1e6627d08a7d6f4d2898cca1">How to Contribute to HugeGraph</a></li>
<li>9.2: <a href="#pg-dc89ef117bed0b0ef3c6487f9a6a8bd0">Subscribe Mailing Lists</a></li>
</ul>
<li>10: <a href="#pg-d9ec0777c4f7a8a41476a65f2ecca6f7">CHANGELOGS</a></li>
<ul>
<li>10.1: <a href="#pg-6b37a0af49c5e6b45aeac03f2a71eab6">HugeGraph 0.12 Release Notes</a></li>
</ul>
<li>11: <a href="#pg-dad363871d9408c4438794858aa44f57"></a></li>
<li>12: <a href="#pg-01c617939d9e21dc19567e8753d6fd3b"></a></li>
<li>13: <a href="#pg-a395eab4dc054c73b0174216cfbeaf1a"></a></li>
</ul>
<div class="content">
<p>Welcome to HugeGraph docs</p>
</div>
</div>
<div class="td-content" style="">
<h1 id="pg-7dd24b6126e5b249f96de862bfc51025">1 - Introduction with HugeGraph</h1>
<h3 id="summary">Summary</h3>
<p>HugeGraph is an easy-to-use, efficient, general-purpose open source graph database system(Graph Database, <a href="https://github.com/hugegraph/hugegraph">GitHub project address</a>),
implemented the <a href="https://tinkerpop.apache.org">Apache TinkerPop3</a> framework and is fully compatible with the <a href="https://tinkerpop.apache.org/gremlin.html">Gremlin</a> query language,
With complete toolchain components, it helps users to easily build applications and products based on graph databases. HugeGraph supports fast import of more than 10 billion vertices and edges, and provides millisecond-level relational query capability (OLTP).
It can be integrated with big data platforms such as Hadoop and Spark for offline analysis (OLAP).</p>
<p>Typical application scenarios of HugeGraph include deep relationship exploration, association analysis, path search, feature extraction, data clustering, community detection, knowledge graph, etc., and are applicable to business fields such as network security, telecommunication fraud, financial risk control, advertising recommendation, social network and intelligence Robots etc.</p>
<p>Typical application scenarios of HugeGraph include deep relationship exploration, association analysis, path search, feature extraction, data clustering, community detection, knowledge graph, etc., and are applicable to business fields such as network security, telecommunication fraud, financial risk control, advertising recommendation, social network and intelligence Robots etc.</p>
<h3 id="features">Features</h3>
<p>HugeGraph supports graph operations in online and offline environments, supports batch import of data, supports efficient complex relationship analysis, and can be seamlessly integrated with big data platforms.
HugeGraph supports multi-user parallel operations. Users can enter Gremlin query statements and get graph query results in time. They can also call HugeGraph API in user programs for graph analysis or query.</p>
<p>This system has the following features:</p>
<ul>
<li>Ease of use: HugeGraph supports Gremlin graph query language and RESTful API, provides common interfaces for graph retrieval, and has peripheral tools with complete functions to easily implement various graph-based query and analysis operations.</li>
<li>Efficiency: HugeGraph has been deeply optimized in graph storage and graph computing, and provides a variety of batch import tools, which can easily complete the rapid import of tens of billions of data, and achieve millisecond-level response for graph retrieval through optimized queries. Supports simultaneous online real-time operations of thousands of users.</li>
<li>Universal: HugeGraph supports the Apache Gremlin standard graph query language and the Property Graph standard graph modeling method, and supports graph-based OLTP and OLAP schemes. Integrate Apache Hadoop and Apache Spark big data platform.</li>
<li>Scalable: supports distributed storage, multiple copies of data and horizontal expansion, built-in multiple back-end storage engines, and can easily expand the back-end storage engine through plug-ins.</li>
<li>Open: HugeGraph code is open source (Apache 2 License), customers can modify and customize independently, and selectively give back to the open source community.</li>
</ul>
<p>The functions of this system include but are not limited to:</p>
<ul>
<li>Supports batch import of data from multiple data sources (including local files, HDFS files, MySQL databases and other data sources), and supports import of multiple file formats (including TXT, CSV, JSON and other formats)</li>
<li>With a visual operation interface, it can be used for operation, analysis and display diagrams, reducing the threshold for users to use</li>
<li>Optimized graph interface: shortest path (Shortest Path), K-step connected subgraph (K-neighbor), K-step to reach the adjacent point (K-out), personalized recommendation algorithm PersonalRank, etc.</li>
<li>Implemented based on Apache TinkerPop3 framework, supports Gremlin graph query language</li>
<li>Support attribute graph, attributes can be added to vertices and edges, and support rich attribute types</li>
<li>Has independent schema metadata information, has powerful graph modeling capabilities, and facilitates third-party system integration</li>
<li>Support multi-vertex ID strategy: support primary key ID, support automatic ID generation, support user-defined string ID, support user-defined digital ID</li>
<li>The attributes of edges and vertices can be indexed to support precise query, range query, and full-text search</li>
<li>The storage system adopts plug-in mode, supporting RocksDB, Cassandra, ScyllaDB, HBase, MySQL, PostgreSQL, Palo, and InMemory, etc.</li>
<li>Integrate with big data systems such as Hadoop and Spark GraphX, and support Bulk Load operations</li>
<li>Support high availability HA, multiple copies of data, backup recovery, monitoring, etc.</li>
</ul>
<h3 id="modules">Modules</h3>
<ul>
<li><a href="/docs/quickstart/hugegraph-server">HugeGraph-Server</a>: HugeGraph-Server is the core part of the HugeGraph project, including sub-modules such as Core, Backend, and API;
<ul>
<li>Core: Graph engine implementation, connecting the Backend module downward and supporting the API module upward;</li>
<li>Backend: Realize the storage of graph data to the backend. The supported backends include: Memory, Cassandra, ScyllaDB, RocksDB, HBase, MySQL and PostgreSQL. Users can choose one according to the actual situation;</li>
<li>API: Built-in REST Server, provides RESTful API to users, and is fully compatible with Gremlin query.</li>
</ul>
</li>
<li><a href="/docs/quickstart/hugegraph-client">HugeGraph-Client</a>: HugeGraph-Client provides a RESTful API client for connecting to HugeGraph-Server. Currently, only Java version is implemented. Users of other languages can implement it by themselves;</li>
<li><a href="/docs/quickstart/hugegraph-loader">HugeGraph-Loader</a>: HugeGraph-Loader is a data import tool based on HugeGraph-Client, which converts ordinary text data into graph vertices and edges and inserts them into graph database;</li>
<li><a href="/docs/quickstart/hugegraph-spark">HugeGraph-Spark</a>: HugeGraph-Spark can do parallel computing on graphs, such as PageRank algorithm, etc.;</li>
<li><a href="/docs/quickstart/hugegraph-hubble">HugeGraph-Hubble</a>: HugeGraph-Hubble is HugeGraph&rsquo;s web visualization management platform, a one-stop visual analysis platform. The platform covers the whole process from data modeling, to rapid data import, to online and offline analysis of data, and unified management of graphs;</li>
<li><a href="/docs/quickstart/hugegraph-tools">HugeGraph-Tools</a>: HugeGraph-Tools is HugeGraph&rsquo;s deployment and management tools, including functions such as managing graphs, backup/restore, Gremlin execution, etc.</li>
</ul>
<h3 id="contact-us">Contact Us</h3>
<ul>
<li><a href="https://github.com/apache/incubator-hugegraph/issues">Github Issues</a>: Feedback on usage issues and functional requirements (priority)</li>
<li>Feedback Email: <a href="mailto:hugegraph@googlegroups.com">hugegraph@googlegroups.com</a></li>
<li>WeChat public account: HugeGraph</li>
</ul>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-64d47cfe1880443239e7c31f8fd1ac1a">2 - Download HugeGraph</h1>
<h3 id="latest-version">Latest version</h3>
<p>The latest HugeGraph: <strong>0.12.0</strong>, released on <em>2021-12-31</em>.</p>
<table>
<thead>
<tr>
<th>components</th>
<th>description</th>
<th>download</th>
</tr>
</thead>
<tbody>
<tr>
<td>HugeGraph-Server</td>
<td>The main program of HugeGraph</td>
<td><a href="https://github.com/hugegraph/hugegraph/releases/download/v0.12.0/hugegraph-0.12.0.tar.gz">0.12.0</a></td>
</tr>
<tr>
<td>HugeGraph-Hubble</td>
<td>Web-based Visual Graphical Interface</td>
<td><a href="https://github.com/hugegraph/hugegraph-hubble/releases/download/v1.6.0/hugegraph-hubble-1.6.0.tar.gz">1.6.0</a></td>
</tr>
<tr>
<td>HugeGraph-Loader</td>
<td>Data import tool</td>
<td><a href="https://github.com/hugegraph/hugegraph-loader/releases/download/v0.12.0/hugegraph-loader-0.12.0.tar.gz">0.12.0</a></td>
</tr>
<tr>
<td>HugeGraph-Tools</td>
<td>Command line toolset</td>
<td><a href="https://github.com/hugegraph/hugegraph-tools/releases/download/v1.6.0/hugegraph-tools-1.6.0.tar.gz">1.6.0</a></td>
</tr>
</tbody>
</table>
<h3 id="versions-mapping">Versions mapping</h3>
<table>
<thead>
<tr>
<th>server</th>
<th>client</th>
<th>loader</th>
<th>hubble</th>
<th>common</th>
<th>tools</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/hugegraph/hugegraph/releases/download/v0.12.0/hugegraph-0.12.0.tar.gz">0.12.0</a></td>
<td><a href="https://mvnrepository.com/artifact/com.baidu.hugegraph/hugegraph-client/2.0.1">2.0.1</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-loader/releases/download/v0.12.0/hugegraph-loader-0.12.0.tar.gz">0.12.0</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-hubble/releases/download/v1.6.0/hugegraph-hubble-1.6.0.tar.gz">1.6.0</a></td>
<td><a href="https://mvnrepository.com/artifact/com.baidu.hugegraph/hugegraph-common/2.0.1">2.0.1</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-tools/releases/download/v1.6.0/hugegraph-tools-1.6.0.tar.gz">1.6.0</a></td>
</tr>
<tr>
<td><a href="https://github.com/hugegraph/hugegraph/releases/download/v0.11.2/hugegraph-0.11.2.tar.gz">0.11.2</a></td>
<td><a href="https://mvnrepository.com/artifact/com.baidu.hugegraph/hugegraph-client/1.9.1">1.9.1</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-loader/releases/download/v0.11.1/hugegraph-loader-0.11.1.tar.gz">0.11.1</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-hubble/releases/download/v1.5.0/hugegraph-hubble-1.5.0.tar.gz">1.5.0</a></td>
<td><a href="https://mvnrepository.com/artifact/com.baidu.hugegraph/hugegraph-common/1.8.1">1.8.1</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-tools/releases/download/v1.5.0/hugegraph-tools-1.5.0.tar.gz">1.5.0</a></td>
</tr>
<tr>
<td><a href="https://github.com/hugegraph/hugegraph/releases/download/v0.10.4/hugegraph-0.10.4.tar.gz">0.10.4</a></td>
<td><a href="https://mvnrepository.com/artifact/com.baidu.hugegraph/hugegraph-client/1.8.0">1.8.0</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-loader/releases/download/v0.10.1/hugegraph-loader-0.10.1.tar.gz">0.10.1</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-studio/releases/download/v0.10.0/hugegraph-studio-0.10.0.tar.gz">0.10.0</a></td>
<td><a href="https://mvnrepository.com/artifact/com.baidu.hugegraph/hugegraph-common/1.6.16">1.6.16</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-tools/releases/download/v1.4.0/hugegraph-tools-1.4.0.tar.gz">1.4.0</a></td>
</tr>
<tr>
<td><a href="https://github.com/hugegraph/hugegraph/releases/download/v0.9.2/hugegraph-0.9.2.tar.gz">0.9.2</a></td>
<td><a href="https://mvnrepository.com/artifact/com.baidu.hugegraph/hugegraph-client/1.7.0">1.7.0</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-loader/releases/download/v0.9.0/hugegraph-loader-0.9.0.tar.gz">0.9.0</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-studio/releases/download/v0.9.0/hugegraph-studio-0.9.0.tar.gz">0.9.0</a></td>
<td><a href="https://mvnrepository.com/artifact/com.baidu.hugegraph/hugegraph-common/1.6.0">1.6.0</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-tools/releases/download/v1.3.0/hugegraph-tools-1.3.0.tar.gz">1.3.0</a></td>
</tr>
<tr>
<td><a href="https://github.com/hugegraph/hugegraph/releases/download/v0.8.0/hugegraph-0.8.0.tar.gz">0.8.0</a></td>
<td><a href="https://mvnrepository.com/artifact/com.baidu.hugegraph/hugegraph-client/1.6.4">1.6.4</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-loader/releases/download/v0.8.0/hugegraph-loader-0.8.0.tar.gz">0.8.0</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-studio/releases/download/v0.8.0/hugegraph-studio-0.8.0.tar.gz">0.8.0</a></td>
<td><a href="https://mvnrepository.com/artifact/com.baidu.hugegraph/hugegraph-common/1.5.3">1.5.3</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-tools/releases/download/v1.2.0/hugegraph-tools-1.2.0.tar.gz">1.2.0</a></td>
</tr>
<tr>
<td><a href="https://github.com/hugegraph/hugegraph/releases/download/v0.7.4/hugegraph-0.7.4.tar.gz">0.7.4</a></td>
<td><a href="https://mvnrepository.com/artifact/com.baidu.hugegraph/hugegraph-client/1.5.8">1.5.8</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-loader/releases/download/v0.7.0/hugegraph-loader-0.7.0.tar.gz">0.7.0</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-studio/releases/download/v0.7.0/hugegraph-studio-0.7.0.tar.gz">0.7.0</a></td>
<td><a href="https://mvnrepository.com/artifact/com.baidu.hugegraph/hugegraph-common/1.4.9">1.4.9</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-tools/releases/download/v1.1.0/hugegraph-tools-1.1.0.tar.gz">1.1.0</a></td>
</tr>
<tr>
<td><a href="https://github.com/hugegraph/hugegraph/releases/download/v0.6.1/hugegraph-0.6.1.tar.gz">0.6.1</a></td>
<td><a href="https://mvnrepository.com/artifact/com.baidu.hugegraph/hugegraph-client/1.5.6">1.5.6</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-loader/releases/download/v0.6.1/hugegraph-loader-0.6.1.tar.gz">0.6.1</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-studio/releases/download/v0.6.1/hugegraph-studio-0.6.1.tar.gz">0.6.1</a></td>
<td><a href="https://mvnrepository.com/artifact/com.baidu.hugegraph/hugegraph-common/1.4.3">1.4.3</a></td>
<td><a href="https://github.com/hugegraph/hugegraph-tools/releases/download/v1.0.0/hugegraph-tools-1.0.0.tar.gz">1.0.0</a></td>
</tr>
<tr>
<td><a href="https://hugegraph.github.io/hugegraph-downloads/hugegraph-release-0.5.6-SNAPSHOT.tar.gz">0.5.6</a></td>
<td><a href="https://mvnrepository.com/artifact/com.baidu.hugegraph/hugegraph-client/1.5.0">1.5.0</a></td>
<td><a href="https://hugegraph.github.io/hugegraph-downloads/hugegraph-loader/hugegraph-loader-0.5.6-bin.tar.gz">0.5.6</a></td>
<td><a href="https://hugegraph.github.io/hugegraph-downloads/hugegraph-studio/hugestudio-release-0.5.0-SNAPSHOT.tar.gz">0.5.0</a></td>
<td>1.4.0</td>
<td></td>
</tr>
<tr>
<td><a href="https://hugegraph.github.io/hugegraph-downloads/hugegraph-release-0.4.5-SNAPSHOT.tar.gz">0.4.5</a></td>
<td><a href="https://mvnrepository.com/artifact/com.baidu.hugegraph/hugegraph-client/1.4.7">1.4.7</a></td>
<td><a href="https://hugegraph.github.io/hugegraph-downloads/hugegraph-loader/hugegraph-loader-0.2.2-bin.tar.gz">0.2.2</a></td>
<td><a href="https://hugegraph.github.io/hugegraph-downloads/hugegraph-studio/hugestudio-release-0.4.1-SNAPSHOT.tar.gz">0.4.1</a></td>
<td>1.3.12</td>
<td></td>
</tr>
</tbody>
</table>
<blockquote>
<p>Note: The latest graph analysis and display platform is Hubble, which supports server v0.10 +.</p>
</blockquote>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-08b1b69f6319108b0455d24614fdd660">3 - Quick Start</h1>
</div>
<div class="td-content" style="">
<h1 id="pg-8ec2ee5fd8ff8e48255d55eab65d92b6">3.1 - HugeGraph-Server Quick Start</h1>
<h3 id="1-hugegraph-server-overview">1 HugeGraph-Server Overview</h3>
<p>HugeGraph-Server is the core part of the HugeGraph Project, contains submodules such as Core、Backend、API.</p>
<p>The Core Module is an implementation of the Tinkerpop interface; The Backend module is used to save the graph data to the data store, currently supported backends include:Memory、Cassandra、ScyllaDB、RocksDB; The API Module provides HTTP Server, which converts Client&rsquo;s HTTP request into a call to Core Moudle.</p>
<blockquote>
<p>There will be two spellings HugeGraph-Server and HugeGraphServer in the document, and other modules are similar. There is no big difference in the meaning of these two ways of writing, which can be distinguished as follows: <code>HugeGraph-Server</code> represents the code of server-related components, <code>HugeGraphServer</code> represents the service process.</p>
</blockquote>
<h3 id="2-dependency">2 Dependency</h3>
<h4 id="21-install-jdk-18">2.1 Install JDK-1.8</h4>
<p>HugeGraph-Server developed based on jdk-1.8, project&rsquo;s code uses many classes and methods in jdk-1.8, please install and configure by yourself.</p>
<p><strong>Be sure to execute the <code>java -version</code> command to check the jdk version before reading</strong></p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>java -version
</span></span></code></pre></div><h4 id="22-install-gcc-430glibcxx_3410-or-update-version-optional">2.2 Install GCC-4.3.0(GLIBCXX_3.4.10) or update version (optional)</h4>
<p>If you are using the RocksDB backend, be sure to execute the <code>gcc --version</code> command to check the gcc version; if you are using other backends, this is not required.</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>gcc --version
</span></span></code></pre></div><h3 id="3-deploy">3 Deploy</h3>
<p>There are three ways to deploy HugeGraph-Server components:</p>
<ul>
<li>Method 1: One-click deployment</li>
<li>Method 2: Download the tarball</li>
<li>Method 3: Source code compilation</li>
</ul>
<h4 id="31-one-click-deployment">3.1 One-click deployment</h4>
<p>HugeGraph-Tools provides a command-line tool for one-click deployment, users can use this tool to quickly download、decompress、configure and start HugeGraphServer and HugeGraphStudio with one click.
of course, you still have to download the tarball of HugeGraph-Tools first.</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>wget https://github.com/hugegraph/hugegraph-tools/releases/download/v<span style="color:#4e9a06">${</span><span style="color:#000">version</span><span style="color:#4e9a06">}</span>/hugegraph-tools-<span style="color:#4e9a06">${</span><span style="color:#000">version</span><span style="color:#4e9a06">}</span>.tar.gz
</span></span><span style="display:flex;"><span>tar -zxvf hugegraph-tools-<span style="color:#4e9a06">${</span><span style="color:#000">version</span><span style="color:#4e9a06">}</span>.tar.gz
</span></span><span style="display:flex;"><span><span style="color:#204a87">cd</span> hugegraph-tools-<span style="color:#4e9a06">${</span><span style="color:#000">version</span><span style="color:#4e9a06">}</span>
</span></span></code></pre></div><blockquote>
<p>note:${version} is the version, The latest version can refer to <a href="/docs/download/download">Download Page</a>, Or click the link to download directly from the Download page</p>
</blockquote>
<p>The general entry script for HugeGraph-Tools is <code>bin/hugegraph</code>, Users can use the <code>help</code> command to view its usage, here only the commands for one-click deployment are introduced.</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>bin/hugegraph deploy -v <span style="color:#ce5c00;font-weight:bold">{</span>hugegraph-version<span style="color:#ce5c00;font-weight:bold">}</span> -p <span style="color:#ce5c00;font-weight:bold">{</span>install-path<span style="color:#ce5c00;font-weight:bold">}</span> <span style="color:#ce5c00;font-weight:bold">[</span>-u <span style="color:#ce5c00;font-weight:bold">{</span>download-path-prefix<span style="color:#ce5c00;font-weight:bold">}]</span>
</span></span></code></pre></div><p><code>{hugegraph-version}</code> indicates the version of HugeGraphServer and HugeGraphStudio to be deployed, users can view the <code>conf/version-mapping.yaml</code> file for version information, <code>{install-path}</code> specify the installation directory of HugeGraphServer and HugeGraphStudio, <code>{download-path-prefix}</code> optional, specify the download address of HugeGraphServer and HugeGraphStudio tarball, use default download URL if not provided, for example, to start HugeGraph-Server and HugeGraphStudio version 0.6, write the above command as <code>bin/hugegraph deploy -v 0.6 -p services</code>.</p>
<h4 id="32-download-the-tar-tarball">3.2 Download the tar tarball</h4>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>wget https://github.com/hugegraph/hugegraph/releases/download/v<span style="color:#4e9a06">${</span><span style="color:#000">version</span><span style="color:#4e9a06">}</span>/hugegraph-<span style="color:#4e9a06">${</span><span style="color:#000">version</span><span style="color:#4e9a06">}</span>.tar.gz
</span></span><span style="display:flex;"><span>tar -zxvf hugegraph-<span style="color:#4e9a06">${</span><span style="color:#000">version</span><span style="color:#4e9a06">}</span>.tar.gz
</span></span></code></pre></div><h4 id="33-source-code-compilation">3.3 Source code compilation</h4>
<p>Download HugeGraph source code</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git clone https://github.com/hugegraph/hugegraph.git
</span></span></code></pre></div><p>Compile and generate tarball</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#204a87">cd</span> hugegraph
</span></span><span style="display:flex;"><span>mvn package -DskipTests
</span></span></code></pre></div><p>The execution log is as follows:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>......
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">[</span>INFO<span style="color:#ce5c00;font-weight:bold">]</span> Reactor Summary:
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">[</span>INFO<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">[</span>INFO<span style="color:#ce5c00;font-weight:bold">]</span> hugegraph .......................................... SUCCESS <span style="color:#ce5c00;font-weight:bold">[</span> 0.003 s<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">[</span>INFO<span style="color:#ce5c00;font-weight:bold">]</span> hugegraph-core ..................................... SUCCESS <span style="color:#ce5c00;font-weight:bold">[</span> 15.335 s<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">[</span>INFO<span style="color:#ce5c00;font-weight:bold">]</span> hugegraph-api ...................................... SUCCESS <span style="color:#ce5c00;font-weight:bold">[</span> 0.829 s<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">[</span>INFO<span style="color:#ce5c00;font-weight:bold">]</span> hugegraph-cassandra ................................ SUCCESS <span style="color:#ce5c00;font-weight:bold">[</span> 1.095 s<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">[</span>INFO<span style="color:#ce5c00;font-weight:bold">]</span> hugegraph-scylladb ................................. SUCCESS <span style="color:#ce5c00;font-weight:bold">[</span> 0.313 s<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">[</span>INFO<span style="color:#ce5c00;font-weight:bold">]</span> hugegraph-rocksdb .................................. SUCCESS <span style="color:#ce5c00;font-weight:bold">[</span> 0.506 s<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">[</span>INFO<span style="color:#ce5c00;font-weight:bold">]</span> hugegraph-mysql .................................... SUCCESS <span style="color:#ce5c00;font-weight:bold">[</span> 0.412 s<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">[</span>INFO<span style="color:#ce5c00;font-weight:bold">]</span> hugegraph-palo ..................................... SUCCESS <span style="color:#ce5c00;font-weight:bold">[</span> 0.359 s<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">[</span>INFO<span style="color:#ce5c00;font-weight:bold">]</span> hugegraph-dist ..................................... SUCCESS <span style="color:#ce5c00;font-weight:bold">[</span> 7.470 s<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">[</span>INFO<span style="color:#ce5c00;font-weight:bold">]</span> hugegraph-example .................................. SUCCESS <span style="color:#ce5c00;font-weight:bold">[</span> 0.403 s<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">[</span>INFO<span style="color:#ce5c00;font-weight:bold">]</span> hugegraph-test ..................................... SUCCESS <span style="color:#ce5c00;font-weight:bold">[</span> 1.509 s<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">[</span>INFO<span style="color:#ce5c00;font-weight:bold">]</span> ------------------------------------------------------------------------
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">[</span>INFO<span style="color:#ce5c00;font-weight:bold">]</span> BUILD SUCCESS
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">[</span>INFO<span style="color:#ce5c00;font-weight:bold">]</span> ------------------------------------------------------------------------
</span></span><span style="display:flex;"><span>......
</span></span></code></pre></div><p>After successful execution, hugegraph-*.tar.gz files will be generated in the hugegraph directory, which is the tarball generated by compilation.</p>
<h3 id="4-config">4 Config</h3>
<p>If you need to quickly start HugeGraph just for testing, then you only need to modify a few configuration items (see next section).
for detailed configuration introduction, please refer to <a href="/docs/config/config-guide">configuration document</a> and <a href="/docs/config/config-option">introduction to configuration items</a></p>
<h3 id="5-startup">5 Startup</h3>
<p>The startup is divided into &ldquo;first startup&rdquo; and &ldquo;non-first startup&rdquo;. This distinction is because the back-end database needs to be initialized before the first startup, and then the service is started.
after the service is stopped artificially, or when the service needs to be started again for other reasons, because the backend database is persistent, you can start the service directly.</p>
<p>When HugeGraphServer starts, it will connect to the backend storage and try to check the version number of the backend storage. If the backend is not initialized or the backend has been initialized but the version does not match (old version data), HugeGraphServer will fail to start and give an error message.</p>
<p>If you need to access HugeGraphServer externally, please modify the <code>restserver.url</code> configuration item of <code>rest-server.properties</code>
(default is <code>http://127.0.0.1:8080</code>), change to machine name or IP address.</p>
<p>Since the configuration (hugegraph.properties) and startup steps required by various backends are slightly different, the following will introduce the configuration and startup of each backend one by one.</p>
<h4 id="51-memory">5.1 Memory</h4>
<p>Update hugegraph.properties</p>
<pre tabindex="0"><code class="language-properties" data-lang="properties">backend=memory
serializer=text
</code></pre><blockquote>
<p>The data of the Memory backend is stored in memory and cannot be persisted. It does not need to initialize the backend. This is the only backend that does not require initialization.</p>
</blockquote>
<p>Start server</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>bin/start-hugegraph.sh
</span></span><span style="display:flex;"><span>Starting HugeGraphServer...
</span></span><span style="display:flex;"><span>Connecting to HugeGraphServer <span style="color:#ce5c00;font-weight:bold">(</span>http://127.0.0.1:8080/graphs<span style="color:#ce5c00;font-weight:bold">)</span>....OK
</span></span></code></pre></div><p>The prompted url is the same as the restserver.url configured in rest-server.properties</p>
<h4 id="52-rocksdb">5.2 RocksDB</h4>
<blockquote>
<p>RocksDB is an embedded database that does not require manual installation and deployment. GCC version &gt;= 4.3.0 (GLIBCXX_3.4.10) is required. If not, GCC needs to be upgraded in advance</p>
</blockquote>
<p>Update hugegraph.properties</p>
<pre tabindex="0"><code class="language-properties" data-lang="properties">backend=rocksdb
serializer=binary
rocksdb.data_path=.
rocksdb.wal_path=.
</code></pre><p>Initialize the database (required only on first startup)</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#204a87">cd</span> hugegraph-<span style="color:#4e9a06">${</span><span style="color:#000">version</span><span style="color:#4e9a06">}</span>
</span></span><span style="display:flex;"><span>bin/init-store.sh
</span></span></code></pre></div><p>Start server</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>bin/start-hugegraph.sh
</span></span><span style="display:flex;"><span>Starting HugeGraphServer...
</span></span><span style="display:flex;"><span>Connecting to HugeGraphServer <span style="color:#ce5c00;font-weight:bold">(</span>http://127.0.0.1:8080/graphs<span style="color:#ce5c00;font-weight:bold">)</span>....OK
</span></span></code></pre></div><h4 id="53-cassandra">5.3 Cassandra</h4>
<blockquote>
<p>users need to install Cassandra by themselves, requiring version 3.0 or above, <a href="http://cassandra.apache.org/download/">download link</a></p>
</blockquote>
<p>Update hugegraph.properties</p>
<pre tabindex="0"><code class="language-properties" data-lang="properties">backend=cassandra
serializer=cassandra
# cassandra backend config
cassandra.host=localhost
cassandra.port=9042
cassandra.username=
cassandra.password=
#cassandra.connect_timeout=5
#cassandra.read_timeout=20
#cassandra.keyspace.strategy=SimpleStrategy
#cassandra.keyspace.replication=3
</code></pre><p>Initialize the database (required only on first startup)</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#204a87">cd</span> hugegraph-<span style="color:#4e9a06">${</span><span style="color:#000">version</span><span style="color:#4e9a06">}</span>
</span></span><span style="display:flex;"><span>bin/init-store.sh
</span></span><span style="display:flex;"><span>Initing HugeGraph Store...
</span></span><span style="display:flex;"><span>2017-12-01 11:26:51 <span style="color:#0000cf;font-weight:bold">1424</span> <span style="color:#ce5c00;font-weight:bold">[</span>main<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>INFO <span style="color:#ce5c00;font-weight:bold">]</span> com.baidu.hugegraph.HugeGraph <span style="color:#ce5c00;font-weight:bold">[]</span> - Opening backend store: <span style="color:#4e9a06">&#39;cassandra&#39;</span>
</span></span><span style="display:flex;"><span>2017-12-01 11:26:52 <span style="color:#0000cf;font-weight:bold">2389</span> <span style="color:#ce5c00;font-weight:bold">[</span>main<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>INFO <span style="color:#ce5c00;font-weight:bold">]</span> com.baidu.hugegraph.backend.store.cassandra.CassandraStore <span style="color:#ce5c00;font-weight:bold">[]</span> - Failed to connect keyspace: hugegraph, try init keyspace later
</span></span><span style="display:flex;"><span>2017-12-01 11:26:52 <span style="color:#0000cf;font-weight:bold">2472</span> <span style="color:#ce5c00;font-weight:bold">[</span>main<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>INFO <span style="color:#ce5c00;font-weight:bold">]</span> com.baidu.hugegraph.backend.store.cassandra.CassandraStore <span style="color:#ce5c00;font-weight:bold">[]</span> - Failed to connect keyspace: hugegraph, try init keyspace later
</span></span><span style="display:flex;"><span>2017-12-01 11:26:52 <span style="color:#0000cf;font-weight:bold">2557</span> <span style="color:#ce5c00;font-weight:bold">[</span>main<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>INFO <span style="color:#ce5c00;font-weight:bold">]</span> com.baidu.hugegraph.backend.store.cassandra.CassandraStore <span style="color:#ce5c00;font-weight:bold">[]</span> - Failed to connect keyspace: hugegraph, try init keyspace later
</span></span><span style="display:flex;"><span>2017-12-01 11:26:53 <span style="color:#0000cf;font-weight:bold">2797</span> <span style="color:#ce5c00;font-weight:bold">[</span>main<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>INFO <span style="color:#ce5c00;font-weight:bold">]</span> com.baidu.hugegraph.backend.store.cassandra.CassandraStore <span style="color:#ce5c00;font-weight:bold">[]</span> - Store initialized: huge_graph
</span></span><span style="display:flex;"><span>2017-12-01 11:26:53 <span style="color:#0000cf;font-weight:bold">2945</span> <span style="color:#ce5c00;font-weight:bold">[</span>main<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>INFO <span style="color:#ce5c00;font-weight:bold">]</span> com.baidu.hugegraph.backend.store.cassandra.CassandraStore <span style="color:#ce5c00;font-weight:bold">[]</span> - Store initialized: huge_schema
</span></span><span style="display:flex;"><span>2017-12-01 11:26:53 <span style="color:#0000cf;font-weight:bold">3044</span> <span style="color:#ce5c00;font-weight:bold">[</span>main<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>INFO <span style="color:#ce5c00;font-weight:bold">]</span> com.baidu.hugegraph.backend.store.cassandra.CassandraStore <span style="color:#ce5c00;font-weight:bold">[]</span> - Store initialized: huge_index
</span></span><span style="display:flex;"><span>2017-12-01 11:26:53 <span style="color:#0000cf;font-weight:bold">3046</span> <span style="color:#ce5c00;font-weight:bold">[</span>pool-3-thread-1<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>INFO <span style="color:#ce5c00;font-weight:bold">]</span> com.baidu.hugegraph.backend.Transaction <span style="color:#ce5c00;font-weight:bold">[]</span> - Clear cache on event <span style="color:#4e9a06">&#39;store.init&#39;</span>
</span></span><span style="display:flex;"><span>2017-12-01 11:26:59 <span style="color:#0000cf;font-weight:bold">9720</span> <span style="color:#ce5c00;font-weight:bold">[</span>main<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>INFO <span style="color:#ce5c00;font-weight:bold">]</span> com.baidu.hugegraph.HugeGraph <span style="color:#ce5c00;font-weight:bold">[]</span> - Opening backend store: <span style="color:#4e9a06">&#39;cassandra&#39;</span>
</span></span><span style="display:flex;"><span>2017-12-01 11:27:00 <span style="color:#0000cf;font-weight:bold">9805</span> <span style="color:#ce5c00;font-weight:bold">[</span>main<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>INFO <span style="color:#ce5c00;font-weight:bold">]</span> com.baidu.hugegraph.backend.store.cassandra.CassandraStore <span style="color:#ce5c00;font-weight:bold">[]</span> - Failed to connect keyspace: hugegraph1, try init keyspace later
</span></span><span style="display:flex;"><span>2017-12-01 11:27:00 <span style="color:#0000cf;font-weight:bold">9886</span> <span style="color:#ce5c00;font-weight:bold">[</span>main<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>INFO <span style="color:#ce5c00;font-weight:bold">]</span> com.baidu.hugegraph.backend.store.cassandra.CassandraStore <span style="color:#ce5c00;font-weight:bold">[]</span> - Failed to connect keyspace: hugegraph1, try init keyspace later
</span></span><span style="display:flex;"><span>2017-12-01 11:27:00 <span style="color:#0000cf;font-weight:bold">9955</span> <span style="color:#ce5c00;font-weight:bold">[</span>main<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>INFO <span style="color:#ce5c00;font-weight:bold">]</span> com.baidu.hugegraph.backend.store.cassandra.CassandraStore <span style="color:#ce5c00;font-weight:bold">[]</span> - Failed to connect keyspace: hugegraph1, try init keyspace later
</span></span><span style="display:flex;"><span>2017-12-01 11:27:00 <span style="color:#0000cf;font-weight:bold">10175</span> <span style="color:#ce5c00;font-weight:bold">[</span>main<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>INFO <span style="color:#ce5c00;font-weight:bold">]</span> com.baidu.hugegraph.backend.store.cassandra.CassandraStore <span style="color:#ce5c00;font-weight:bold">[]</span> - Store initialized: huge_graph
</span></span><span style="display:flex;"><span>2017-12-01 11:27:00 <span style="color:#0000cf;font-weight:bold">10321</span> <span style="color:#ce5c00;font-weight:bold">[</span>main<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>INFO <span style="color:#ce5c00;font-weight:bold">]</span> com.baidu.hugegraph.backend.store.cassandra.CassandraStore <span style="color:#ce5c00;font-weight:bold">[]</span> - Store initialized: huge_schema
</span></span><span style="display:flex;"><span>2017-12-01 11:27:00 <span style="color:#0000cf;font-weight:bold">10413</span> <span style="color:#ce5c00;font-weight:bold">[</span>main<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>INFO <span style="color:#ce5c00;font-weight:bold">]</span> com.baidu.hugegraph.backend.store.cassandra.CassandraStore <span style="color:#ce5c00;font-weight:bold">[]</span> - Store initialized: huge_index
</span></span><span style="display:flex;"><span>2017-12-01 11:27:00 <span style="color:#0000cf;font-weight:bold">10413</span> <span style="color:#ce5c00;font-weight:bold">[</span>pool-3-thread-1<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>INFO <span style="color:#ce5c00;font-weight:bold">]</span> com.baidu.hugegraph.backend.Transaction <span style="color:#ce5c00;font-weight:bold">[]</span> - Clear cache on event <span style="color:#4e9a06">&#39;store.init&#39;</span>
</span></span></code></pre></div><p>Start server</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>bin/start-hugegraph.sh
</span></span><span style="display:flex;"><span>Starting HugeGraphServer...
</span></span><span style="display:flex;"><span>Connecting to HugeGraphServer <span style="color:#ce5c00;font-weight:bold">(</span>http://127.0.0.1:8080/graphs<span style="color:#ce5c00;font-weight:bold">)</span>....OK
</span></span></code></pre></div><h4 id="54-scylladb">5.4 ScyllaDB</h4>
<blockquote>
<p>users need to install ScyllaDB by themselves, version 2.1 or above is recommended, <a href="https://docs.scylladb.com/getting-started/">download link</a></p>
</blockquote>
<p>Update hugegraph.properties</p>
<pre tabindex="0"><code class="language-properties" data-lang="properties">backend=scylladb
serializer=scylladb
# cassandra backend config
cassandra.host=localhost
cassandra.port=9042
cassandra.username=
cassandra.password=
#cassandra.connect_timeout=5
#cassandra.read_timeout=20
#cassandra.keyspace.strategy=SimpleStrategy
#cassandra.keyspace.replication=3
</code></pre><p>Since the scylladb database itself is an &ldquo;optimized version&rdquo; based on cassandra, if the user does not have scylladb installed, they can also use cassandra as the backend storage directly. They only need to change the backend and serializer to scylladb, and the host and post point to the seeds and port of the cassandra cluster. Yes, but it is not recommended to do so, it will not take advantage of scylladb itself.</p>
<p>Initialize the database (required only on first startup)</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#204a87">cd</span> hugegraph-<span style="color:#4e9a06">${</span><span style="color:#000">version</span><span style="color:#4e9a06">}</span>
</span></span><span style="display:flex;"><span>bin/init-store.sh
</span></span></code></pre></div><p>Start server</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>bin/start-hugegraph.sh
</span></span><span style="display:flex;"><span>Starting HugeGraphServer...
</span></span><span style="display:flex;"><span>Connecting to HugeGraphServer <span style="color:#ce5c00;font-weight:bold">(</span>http://127.0.0.1:8080/graphs<span style="color:#ce5c00;font-weight:bold">)</span>....OK
</span></span></code></pre></div><h4 id="55-hbase">5.5 HBase</h4>
<blockquote>
<p>users need to install HBase by themselves, requiring version 2.0 or above,<a href="https://hbase.apache.org/downloads.html">download link</a></p>
</blockquote>
<p>Update hugegraph.properties</p>
<pre tabindex="0"><code class="language-properties" data-lang="properties">backend=hbase
serializer=hbase
# hbase backend config
hbase.hosts=localhost
hbase.port=2181
</code></pre><p>Initialize the database (required only on first startup)</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#204a87">cd</span> hugegraph-<span style="color:#4e9a06">${</span><span style="color:#000">version</span><span style="color:#4e9a06">}</span>
</span></span><span style="display:flex;"><span>bin/init-store.sh
</span></span></code></pre></div><p>Start server</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>bin/start-hugegraph.sh
</span></span><span style="display:flex;"><span>Starting HugeGraphServer...
</span></span><span style="display:flex;"><span>Connecting to HugeGraphServer <span style="color:#ce5c00;font-weight:bold">(</span>http://127.0.0.1:8080/graphs<span style="color:#ce5c00;font-weight:bold">)</span>....OK
</span></span></code></pre></div><blockquote>
<p>for more other backend configurations, please refer to<a href="/docs/config/config-option">introduction to configuration items</a></p>
</blockquote>
<h3 id="6-access-server">6 Access server</h3>
<h4 id="61-service-startup-status-check">6.1 Service startup status check</h4>
<p>Use <code>jps</code> to see service process</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>jps
</span></span><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">6475</span> HugeGraphServer
</span></span></code></pre></div><p><code>curl</code> request <code>RESTfulAPI</code></p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#204a87">echo</span> <span style="color:#4e9a06">`</span>curl -o /dev/null -s -w %<span style="color:#ce5c00;font-weight:bold">{</span>http_code<span style="color:#ce5c00;font-weight:bold">}</span> <span style="color:#4e9a06">&#34;http://localhost:8080/graphs/hugegraph/graph/vertices&#34;</span><span style="color:#4e9a06">`</span>
</span></span></code></pre></div><p>Return 200, which means the server starts normally.</p>
<h4 id="62-request-server">6.2 Request Server</h4>
<p>The RESTful API of HugeGraphServer includes various types of resources, typically including graph, schema, gremlin, traverser and task.</p>
<ul>
<li><code>graph</code> contains <code>vertices</code><code>edges</code></li>
<li><code>schema</code> contains <code>vertexlabels</code><code>propertykeys</code><code>edgelabels</code><code>indexlabels</code></li>
<li><code>gremlin</code> contains various <code>Gremlin</code> statements, such as <code>g.v()</code>, which can be executed synchronously or asynchronously</li>
<li><code>traverser</code> contains various advanced queries including shortest paths, intersections, N-step reachable neighbors, etc.</li>
<li><code>task</code> contains query and delete with asynchronous tasks</li>
</ul>
<h5 id="621-get-vertices-and-its-related-properties-in-hugegraph">6.2.1 Get vertices and its related properties in <code>hugegraph</code></h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl http://localhost:8080/graphs/hugegraph/graph/vertices
</span></span></code></pre></div><p><em>explanation</em></p>
<ol>
<li>
<p>Since there are many vertices and edges in the graph, for list-type requests, such as getting all vertices, getting all edges, etc., the server will compress the data and return it, so when use curl, you get a bunch of garbled characters, you can redirect to gunzip for decompression. It is recommended to use Chrome browser + Restlet plugin to send HTTP requests for testing.</p>
<pre tabindex="0"><code>curl &#34;http://localhost:8080/graphs/hugegraph/graph/vertices&#34; | gunzip
</code></pre></li>
<li>
<p>The current default configuration of HugeGraphServer can only be accessed locally, and the configuration can be modified so that it can be accessed on other machines.</p>
<pre tabindex="0"><code>vim conf/rest-server.properties
restserver.url=http://0.0.0.0:8080
</code></pre></li>
</ol>
<p>response body:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">328</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;lop&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;java&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;josh&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">32</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#a40000">...</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>For detailed API, please refer to<a href="/dcos/clients/restful-api">RESTful-API</a></p>
<h3 id="7-stop-server">7 Stop Server</h3>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#000">$cd</span> hugegraph-<span style="color:#4e9a06">${</span><span style="color:#000">version</span><span style="color:#4e9a06">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000">$bin</span>/stop-hugegraph.sh
</span></span></code></pre></div>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-685a02f8811d86f1ce195d7c73d9ea44">3.2 - HugeGraph-Loader Quick Start</h1>
<h3 id="1-hugegraph-loader-overview">1 HugeGraph-Loader Overview</h3>
<p>HugeGraph-Loader is the data import component of HugeGragh, which can convert data from various data sources into graph vertices and edges and import them into the graph database in batches.</p>
<p>Currently supported data sources include:</p>
<ul>
<li>Local disk file or directory, supports TEXT, CSV and JSON format files, supports compressed files</li>
<li>HDFS file or directory, supports compressed files</li>
<li>Mainstream relational databases, such as MySQL, PostgreSQL, Oracle, SQL Server</li>
</ul>
<p>Local disk files and HDFS files support resumable uploads.</p>
<p>It will be explained in detail below.</p>
<blockquote>
<p>Note: HugeGraph-Loader requires HugeGraph Server service, please refer to <a href="/docs/quickstart/hugegraph-server">HugeGraph-Server Quick Start</a> to download and start Server</p>
</blockquote>
<h3 id="2-get-hugegraph-loader">2 Get HugeGraph-Loader</h3>
<p>There are two ways to get HugeGraph-Loader:</p>
<ul>
<li>Download the compiled tarball</li>
<li>Clone source code then compile and install</li>
</ul>
<h4 id="21-download-the-compiled-archive">2.1 Download the compiled archive</h4>
<p>Download the latest version of the HugeGraph-Loader release package:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>wget https://github.com/hugegraph/hugegraph-loader/releases/download/v<span style="color:#4e9a06">${</span><span style="color:#000">version</span><span style="color:#4e9a06">}</span>/hugegraph-loader-<span style="color:#4e9a06">${</span><span style="color:#000">version</span><span style="color:#4e9a06">}</span>.tar.gz
</span></span><span style="display:flex;"><span>tar zxvf hugegraph-loader-<span style="color:#4e9a06">${</span><span style="color:#000">version</span><span style="color:#4e9a06">}</span>.tar.gz
</span></span></code></pre></div><h4 id="22-clone-source-code-to-compile-and-install">2.2 Clone source code to compile and install</h4>
<p>Clone the latest version of HugeGraph-Loader source package:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>$ git clone https://github.com/hugegraph/hugegraph-loader.git
</span></span></code></pre></div><p>Due to the license limitation of the <code>Oracle OJDBC</code>, you need to manually install ojdbc to the local maven repository.
Visit the <a href="https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html">Oracle jdbc downloads</a> page. Select Oracle Database 12c Release 2 (12.2.0.1) drivers, as shown in the following figure.</p>
<center>
<img src="/docs/images/oracle-download.png" alt="image">
</center>
<p>After opening the link, select &ldquo;ojdbc8.jar&rdquo; as shown below.</p>
<center>
<img src="/docs/images/ojdbc8.png" alt="image">
</center>
<p>Install ojdbc8 to the local maven repository, enter the directory where <code>ojdbc8.jar</code> is located, and execute the following command.</p>
<pre tabindex="0"><code>mvn install:install-file -Dfile=./ojdbc8.jar -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=12.2.0.1 -Dpackaging=jar
</code></pre><p>Compile and generate tar package:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#204a87">cd</span> hugegraph-loader
</span></span><span style="display:flex;"><span>mvn clean package -DskipTests
</span></span></code></pre></div><h3 id="3-how-to-use">3 How to use</h3>
<p>The basic process of using HugeGraph-Loader is divided into the following steps:</p>
<ul>
<li>Write graph schema</li>
<li>Prepare data files</li>
<li>Write input source map files</li>
<li>Execute command import</li>
</ul>
<h4 id="31-construct-graph-schema">3.1 Construct graph schema</h4>
<p>This step is the modeling process. Users need to have a clear idea of ​​their existing data and the graph model they want to create, and then write the schema to build the graph model.</p>
<p>For example, if you want to create a graph with two types of vertices and two types of edges, the vertices are &ldquo;people&rdquo; and &ldquo;software&rdquo;, the edges are &ldquo;people know people&rdquo; and &ldquo;people create software&rdquo;, and these vertices and edges have some attributes, For example, the vertex &ldquo;person&rdquo; has: &ldquo;name&rdquo;, &ldquo;age&rdquo; and other attributes,
&ldquo;Software&rdquo; includes: &ldquo;name&rdquo;, &ldquo;sale price&rdquo; and other attributes; side &ldquo;knowledge&rdquo; includes: &ldquo;date&rdquo; attribute and so on.</p>
<center>
<img src="/docs/images/demo-graph-model.png" alt="image">
<p>graph model example</p>
</center>
<p>After designing the graph model, we can use <code>groovy</code> to write the definition of <code>schema</code> and save it to a file, here named <code>schema.groovy</code>.</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Create some properties
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asInt</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asDouble</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Create the person vertex type, which has three attributes: name, age, city, and the primary key is name
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Create a software vertex type, which has two properties: name, price, the primary key is name
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Create the knows edge type, which goes from person to person
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">sourceLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">targetLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Create the created edge type, which points from person to software
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">sourceLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">targetLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span></code></pre></div><blockquote>
<p>Please refer to the corresponding section in <a href="/docs/clients/hugegraph-client">hugegraph-client</a> for the detailed description of the schema.</p>
</blockquote>
<h4 id="32-prepare-data">3.2 Prepare data</h4>
<p>The data sources currently supported by HugeGraph-Loader include:</p>
<ul>
<li>local disk file or directory</li>
<li>HDFS file or directory</li>
<li>Partial relational database</li>
</ul>
<h5 id="321-data-source-structure">3.2.1 Data source structure</h5>
<h6 id="3211-local-disk-file-or-directory">3.2.1.1 Local disk file or directory</h6>
<p>The user can specify a local disk file as the data source. If the data is scattered in multiple files, a certain directory is also supported as the data source, but multiple directories are not supported as the data source for the time being.</p>
<p>For example: my data is scattered in multiple files, part-0, part-1 &hellip; part-n. To perform the import, it must be ensured that they are placed in one directory. Then in the loader&rsquo;s mapping file, specify <code>path</code> as the directory.</p>
<p>Supported file formats include:</p>
<ul>
<li>TEXT</li>
<li>CSV</li>
<li>JSON</li>
</ul>
<p>TEXT is a text file with custom delimiters, the first line is usually the header, and the name of each column is recorded, and no header line is allowed (specified in the mapping file). Each remaining row represents a record, which will be converted into a vertex/edge; each column of the row corresponds to a field, which will be converted into the id, label or attribute of the vertex/edge;</p>
<p>An example is as follows:</p>
<pre tabindex="0"><code>id|name|lang|price|ISBN
1|lop|java|328|ISBN978-7-107-18618-5
2|ripple|java|199|ISBN978-7-100-13678-5
</code></pre><p>CSV is a TEXT file with commas <code>,</code> as delimiters. When a column value itself contains a comma, the column value needs to be enclosed in double quotes, for example:</p>
<pre tabindex="0"><code>marko,29,Beijing
&#34;li,nary&#34;,26,&#34;Wu,han&#34;
</code></pre><p>The JSON file requires that each line is a JSON string, and the format of each line needs to be consistent.</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span><span style="color:#204a87;font-weight:bold">&#34;source_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;marko&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#204a87;font-weight:bold">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vadas&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;20160110&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.5</span><span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span><span style="color:#204a87;font-weight:bold">&#34;source_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;marko&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#204a87;font-weight:bold">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;josh&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;20130220&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1.0</span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h6 id="3212-hdfs-file-or-directory">3.2.1.2 HDFS file or directory</h6>
<p>Users can also specify HDFS files or directories as data sources, all of the above requirements for <code>local disk files or directories</code> apply here. In addition, since HDFS usually stores compressed files, loader also provides support for compressed files, and <code>local disk file or directory</code> also supports compressed files.</p>
<p>Currently supported compressed file types include: GZIP, BZ2, XZ, LZMA, SNAPPY_RAW, SNAPPY_FRAMED, Z, DEFLATE, LZ4_BLOCK, LZ4_FRAMED, ORC, and PARQUET.</p>
<h6 id="3213-mainstream-relational-database">3.2.1.3 Mainstream relational database</h6>
<p>The loader also supports some relational databases as data sources, and currently supports MySQL, PostgreSQL, Oracle and SQL Server.</p>
<p>However, the requirements for the table structure are relatively strict at present. If <strong>association query</strong> needs to be done during the import process, such a table structure is not allowed. The associated query means: after reading a row of the table, it is found that the value of a certain column cannot be used directly (such as a foreign key), and you need to do another query to determine the true value of the column.</p>
<p>For example: Suppose there are three tables, person, software and created</p>
<pre tabindex="0"><code>// person schema
id | name | age | city
</code></pre><pre tabindex="0"><code>// software schema
id | name | lang | price
</code></pre><pre tabindex="0"><code>// created schema
id | p_id | s_id | date
</code></pre><p>If the id strategy of person or software is specified as PRIMARY_KEY when modeling (schema), choose name as the primary key (note: this is the concept of vertexlabel in hugegraph), when importing edge data, the source vertex and target need to be spliced ​​out. For the id of the vertex, you must go to the person/software table with p_id/s_id to find the corresponding name. In the case of the schema that requires additional query, the loader does not support it temporarily. In this case, the following two methods can be used instead:</p>
<ol>
<li>The id strategy of person and software is still specified as PRIMARY_KEY, but the id column of the person table and software table is used as the primary key attribute of the vertex, so that the id can be generated by directly splicing p_id and s_id with the label of the vertex when importing an edge;</li>
<li>Specify the id policy of person and software as CUSTOMIZE, and then directly use the id column of the person table and the software table as the vertex id, so that p_id and s_id can be used directly when importing edges;</li>
</ol>
<p>The key point is to make the edge use p_id and s_id directly, don&rsquo;t check it again.</p>
<h5 id="322-prepare-vertex-and-edge-data">3.2.2 Prepare vertex and edge data</h5>
<h6 id="3221-vertex-data">3.2.2.1 Vertex Data</h6>
<p>The vertex data file consists of data line by line. Generally, each line is used as a vertex, and each column is used as a vertex attribute. The following description uses CSV format as an example.</p>
<ul>
<li>person vertex data (the data itself does not contain a header)</li>
</ul>
<pre tabindex="0"><code class="language-csv" data-lang="csv">Tom,48,Beijing
Jerry,36,Shanghai
</code></pre><ul>
<li>software vertex data (the data itself contains the header)</li>
</ul>
<pre tabindex="0"><code class="language-csv" data-lang="csv">name,price
Photoshop,999
Office,388
</code></pre><h6 id="3222-edge-data">3.2.2.2 Edge data</h6>
<p>The edge data file consists of data line by line. Generally, each line is used as an edge. Some of the columns are used as the IDs of the source and target vertices, and other columns are used as edge attributes. The following uses JSON format as an example.</p>
<ul>
<li>knows edge data</li>
</ul>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span><span style="color:#204a87;font-weight:bold">&#34;source_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Tom&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#204a87;font-weight:bold">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Jerry&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2008-12-12&#34;</span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><ul>
<li>created edge data</li>
</ul>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span><span style="color:#204a87;font-weight:bold">&#34;source_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Tom&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#204a87;font-weight:bold">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Photoshop&#34;</span><span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span><span style="color:#204a87;font-weight:bold">&#34;source_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Tom&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#204a87;font-weight:bold">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Office&#34;</span><span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span><span style="color:#204a87;font-weight:bold">&#34;source_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Jerry&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#204a87;font-weight:bold">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Office&#34;</span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="33-write-data-source-mapping-file">3.3 Write data source mapping file</h4>
<h5 id="331-mapping-file-overview">3.3.1 Mapping file overview</h5>
<p>The mapping file of the input source is used to describe how to establish the mapping relationship between the input source data and the vertex type/edge type of the graph. It is organized in <code>JSON</code> format and consists of multiple mapping blocks, each of which is responsible for mapping an input source. Mapped to vertices and edges.</p>
<p>Specifically, each mapping block contains <strong>an input source</strong> and multiple <strong>vertex mapping</strong> and <strong>edge mapping</strong> blocks, and the input source block corresponds to the <code>local disk file or directory</code>, <code> HDFS file or directory</code> and <code>relational database</code> are responsible for describing the basic information of the data source, such as where the data is, what format, what is the delimiter, etc. The vertex map/edge map is bound to the input source, which columns of the input source can be selected, which columns are used as ids, which columns are used as attributes, and what attributes are mapped to each column, the values ​​of the columns are mapped to what values ​​of attributes, and so on.</p>
<p>In the simplest terms, each mapping block describes: where is the file to be imported, which type of vertices/edges each line of the file is to be used as, which columns of the file need to be imported, and the corresponding vertices/edges of these columns. what properties etc.</p>
<blockquote>
<p>Note: The format of the mapping file before version 0.11.0 and the format after 0.11.0 has changed greatly. For the convenience of expression, the mapping file (format) before 0.11.0 is called version 1.0, and the version after 0.11.0 is version 2.0 . And unless otherwise specified, the &ldquo;map file&rdquo; refers to version 2.0.</p>
</blockquote>
<p>The skeleton of the map file for version 2.0 is:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;version&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2.0&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;structs&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;input&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;edges&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>Two versions of the mapping file are given directly here (the above graph model and data file are described)</p>
<p>Mapping file for version 2.0:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;version&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2.0&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;structs&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;skip&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;input&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;FILE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;path&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex_person.csv&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;file_filter&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;extensions&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;*&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CSV&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;delimiter&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;,&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date_format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;yyyy-MM-dd HH:mm:ss&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;time_zone&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;GMT+8&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;skipped_line&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;regex&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;(^#|^//).*|&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;compression&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;NONE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;header&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;city&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;charset&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;UTF-8&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;list_format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;start_symbol&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;[&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;elem_delimiter&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;|&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;end_symbol&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;]&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;skip&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">null</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;unfold&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;field_mapping&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value_mapping&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;selected&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ignored&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;null_values&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;update_strategies&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;edges&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;skip&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;input&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;FILE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;path&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex_software.csv&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;file_filter&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;extensions&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;*&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CSV&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;delimiter&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;,&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date_format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;yyyy-MM-dd HH:mm:ss&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;time_zone&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;GMT+8&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;skipped_line&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;regex&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;(^#|^//).*|&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;compression&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;NONE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;header&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">null</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;charset&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;UTF-8&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;list_format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;start_symbol&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;elem_delimiter&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;,&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;end_symbol&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;skip&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">null</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;unfold&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;field_mapping&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value_mapping&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;selected&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ignored&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;null_values&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;update_strategies&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;edges&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;3&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;skip&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;input&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;FILE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;path&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;edge_knows.json&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;file_filter&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;extensions&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;*&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;JSON&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;delimiter&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">null</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date_format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;yyyy-MM-dd HH:mm:ss&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;time_zone&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;GMT+8&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;skipped_line&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;regex&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;(^#|^//).*|&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;compression&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;NONE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;header&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">null</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;charset&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;UTF-8&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;list_format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">null</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;edges&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;skip&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;source_name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;unfold_source&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;target_name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;unfold_target&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;field_mapping&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value_mapping&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;selected&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ignored&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;null_values&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;update_strategies&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;4&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;skip&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;input&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;FILE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;path&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;edge_created.json&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;file_filter&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;extensions&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;*&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;JSON&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;delimiter&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">null</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date_format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;yyyy-MM-dd HH:mm:ss&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;time_zone&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;GMT+8&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;skipped_line&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;regex&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;(^#|^//).*|&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;compression&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;NONE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;header&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">null</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;charset&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;UTF-8&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;list_format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">null</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;edges&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;skip&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;source_name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;unfold_source&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;target_name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;unfold_target&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;field_mapping&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value_mapping&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;selected&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ignored&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;null_values&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;update_strategies&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>Mapping file for version 1.0:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;input&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;file&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;path&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex_person.csv&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CSV&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;header&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;charset&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;UTF-8&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;input&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;file&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;path&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex_software.csv&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CSV&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;edges&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;source_name&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;input&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;file&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;path&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;edge_knows.json&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;JSON&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;field_mapping&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;source_name&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;input&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;file&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;path&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;edge_created.json&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;JSON&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;field_mapping&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>The 1.0 version of the mapping file is centered on the vertex and edge, and sets the input source; while the 2.0 version is centered on the input source, and sets the vertex and edge mapping. Some input sources (such as a file) can generate both vertices and edges. If you write in the 1.0 format, you need to write an input block in each of the vertex and egde mapping blocks. The two input blocks are exactly the same ; and the 2.0 version only needs to write input once. Therefore, compared with version 1.0, version 2.0 can save some repetitive writing of input.</p>
<p>In the bin directory of hugegraph-loader-{version}, there is a script tool <code>mapping-convert.sh</code> that can directly convert the mapping file of version 1.0 to version 2.0. The usage is as follows:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>bin/mapping-convert.sh struct.json
</span></span></code></pre></div><p>A struct-v2.json will be generated in the same directory as struct.json.</p>
<h5 id="332-input-source">3.3.2 Input Source</h5>
<p>Input sources are currently divided into three categories: FILE, HDFS, and JDBC, which are distinguished by the <code>type</code> node. We call them local file input sources, HDFS input sources, and JDBC input sources, which are described below.</p>
<h6 id="3321-local-file-input-source">3.3.2.1 Local file input source</h6>
<ul>
<li>id: The id of the input source. This field is used to support some internal functions. It is not required (it will be automatically generated if it is not filled in). It is strongly recommended to write it, which is very helpful for debugging;</li>
<li>skip: whether to skip the input source, because the JSON file cannot add comments, if you do not want to import an input source during a certain import, but do not want to delete the configuration of the input source, you can set it to true to skip it, the default is false, not required;</li>
<li>input: input source map block, composite structure
<ul>
<li>type: input source type, file or FILE must be filled;</li>
<li>path: the path of the local file or directory, the absolute path or the relative path relative to the mapping file, it is recommended to use the absolute path, required;</li>
<li>file_filter: filter files with compound conditions from <code>path</code>, compound structure, currently only supports configuration extensions, represented by child node <code>extensions</code>, the default is &ldquo;*&rdquo;, which means to keep all files;</li>
<li>format: the format of the local file, the optional values ​​are CSV, TEXT and JSON, which must be uppercase and required;</li>
<li>header: the column name of each column of the file, if not specified, the first line of the data file will be used as the header; when the file itself has a header and the header is specified, the first line of the file will be treated as a normal data line; JSON The file does not need to specify a header, optional;</li>
<li>delimiter: The column delimiter of the file line, the default is comma <code>&quot;,&quot;</code> as the delimiter, the <code>JSON</code> file does not need to be specified, optional;</li>
<li>charset: the encoded character set of the file, the default is <code>UTF-8</code>, optional;</li>
<li>date_format: custom date format, the default value is yyyy-MM-dd HH:mm:ss, optional; if the date is presented in the form of a timestamp, this item must be written as <code>timestamp</code> (fixed writing);</li>
<li>time_zone: Set which time zone the date data is in, the default value is <code>GMT+8</code>, optional;</li>
<li>skipped_line: The line to be skipped, compound structure, currently only the regular expression of the line to be skipped can be configured, described by the child node <code>regex</code>, no line is skipped by default, optional;</li>
<li>compression: The compression format of the file, the optional values ​​are NONE, GZIP, BZ2, XZ, LZMA, SNAPPY_RAW, SNAPPY_FRAMED, Z, DEFLATE, LZ4_BLOCK, LZ4_FRAMED, ORC and PARQUET, the default is NONE, which means a non-compressed file, optional;</li>
<li>list_format: When a column of the file (non-JSON) is a collection structure (the Cardinality of the PropertyKey in the corresponding figure is Set or List), you can use this item to set the start character, separator, and end character of the column, compound structure :
<ul>
<li>start_symbol: The start character of the collection structure column (the default value is <code>[</code>, JSON format currently does not support specification)</li>
<li>elem_delimiter: the delimiter of the collection structure column (the default value is <code>|</code>, JSON format currently only supports native <code>,</code> delimiter)</li>
<li>end_symbol: the end character of the collection structure column (the default value is <code>]</code>, the JSON format does not currently support specification)</li>
</ul>
</li>
</ul>
</li>
</ul>
<h6 id="3322-hdfs-input-source">3.3.2.2 HDFS input source</h6>
<p>The nodes and meanings of the above <code>local file input source</code> are basically applicable here. Only the different and unique nodes of the HDFS input source are listed below.</p>
<ul>
<li>type: input source type, must fill in hdfs or HDFS, required;</li>
<li>path: the path of the HDFS file or directory, it must be the absolute path of HDFS, required;</li>
<li>core_site_path: the path of the core-site.xml file of the HDFS cluster, the key point is to specify the address of the namenode (fs.default.name) and the implementation of the file system (fs.hdfs.impl);</li>
</ul>
<h6 id="3323-jdbc-input-source">3.3.2.3 JDBC input source</h6>
<p>As mentioned above, it supports multiple relational databases, but because their mapping structures are very similar, they are collectively referred to as JDBC input sources, and then use the <code>vendor</code> node to distinguish different databases.</p>
<ul>
<li>type: input source type, must fill in jdbc or JDBC, required;</li>
<li>vendor: database type, optional options are [MySQL, PostgreSQL, Oracle, SQLServer], case-insensitive, required;</li>
<li>driver: the type of driver used by jdbc, required;</li>
<li>url: the url of the database that jdbc wants to connect to, required;</li>
<li>database: the name of the database to be connected, required;</li>
<li>schema: The name of the schema to be connected, different databases have different requirements, and the details are explained below;</li>
<li>table: the name of the table to be connected, at least one of <code>table</code> or <code>custom_sql</code> is required;</li>
<li>custom_sql: custom SQL statement, at least one of <code>table</code> or <code>custom_sql</code> is required;</li>
<li>username: username to connect to the database, required;</li>
<li>password: password for connecting to the database, required;</li>
<li>batch_size: The size of one page when obtaining table data by page, the default is 500, optional;</li>
</ul>
<p><strong>MYSQL</strong></p>
<table>
<thead>
<tr>
<th>Node</th>
<th>Fixed value or common value</th>
</tr>
</thead>
<tbody>
<tr>
<td>vendor</td>
<td>MYSQL</td>
</tr>
<tr>
<td>driver</td>
<td>com.mysql.cj.jdbc.Driver</td>
</tr>
<tr>
<td>url</td>
<td>jdbc:mysql://127.0.0.1:3306</td>
</tr>
</tbody>
</table>
<p>schema: nullable, if filled in, it must be the same as the value of database</p>
<p><strong>POSTGRESQL</strong></p>
<table>
<thead>
<tr>
<th>Node</th>
<th>Fixed value or common value</th>
</tr>
</thead>
<tbody>
<tr>
<td>vendor</td>
<td>POSTGRESQL</td>
</tr>
<tr>
<td>driver</td>
<td>org.postgresql.Driver</td>
</tr>
<tr>
<td>url</td>
<td>jdbc:postgresql://127.0.0.1:5432</td>
</tr>
</tbody>
</table>
<p>schema: nullable, default is &ldquo;public&rdquo;</p>
<p><strong>ORACLE</strong></p>
<table>
<thead>
<tr>
<th>Node</th>
<th>Fixed value or common value</th>
</tr>
</thead>
<tbody>
<tr>
<td>vendor</td>
<td>ORACLE</td>
</tr>
<tr>
<td>driver</td>
<td>oracle.jdbc.driver.OracleDriver</td>
</tr>
<tr>
<td>url</td>
<td>jdbc:oracle:thin:@127.0.0.1:1521</td>
</tr>
</tbody>
</table>
<p>schema: nullable, the default value is the same as the username</p>
<p><strong>SQLSERVER</strong></p>
<table>
<thead>
<tr>
<th>Node</th>
<th>Fixed value or common value</th>
</tr>
</thead>
<tbody>
<tr>
<td>vendor</td>
<td>SQLSERVER</td>
</tr>
<tr>
<td>driver</td>
<td>com.microsoft.sqlserver.jdbc.SQLServerDriver</td>
</tr>
<tr>
<td>url</td>
<td>jdbc:sqlserver://127.0.0.1:1433</td>
</tr>
</tbody>
</table>
<p>schema: required</p>
<h5 id="331-vertex-and-edge-mapping">3.3.1 Vertex and Edge Mapping</h5>
<p>The nodes of vertex and edge mapping (a key in the JSON file) have a lot of the same parts. The same parts are introduced first, and then the unique nodes of <code>vertex map</code> and <code>edge map</code> are introduced respectively.</p>
<p><strong>Nodes of the same section</strong></p>
<ul>
<li>label: <code>label</code> to which the vertex/edge data to be imported belongs, required;</li>
<li>field_mapping: Map the column name of the input source column to the attribute name of the vertex/edge, optional;</li>
<li>value_mapping: map the data value of the input source to the attribute value of the vertex/edge, optional;</li>
<li>selected: select some columns to insert, other unselected ones are not inserted, cannot exist at the same time as <code>ignored</code>, optional;</li>
<li>ignored: ignore some columns so that they do not participate in insertion, cannot exist at the same time as <code>selected</code>, optional;</li>
<li>null_values: You can specify some strings to represent null values, such as &ldquo;NULL&rdquo;. If the vertex/edge attribute corresponding to this column is also a nullable attribute, the value of this attribute will not be set when constructing the vertex/edge, optional ;</li>
<li>update_strategies: If the data needs to be <strong>updated</strong> in batches in a specific way, you can specify a specific update strategy for each attribute (see below for details), optional;</li>
<li>unfold: Whether to unfold the column, each unfolded column will form a row with other columns, which is equivalent to unfolding into multiple rows; for example, the value of a certain column (id column) of the file is <code>[1,2,3]</code>, The values ​​of other columns are <code>18,Beijing</code>. When unfold is set, this row will become 3 rows, namely: <code>1,18,Beijing</code>, <code>2,18,Beijing</code> and <code>3,18, Beijing</code>. Note that this will only expand the column selected as id. Default false, optional;</li>
</ul>
<p><strong>Update strategy</strong> supports 8 types: (requires all uppercase)</p>
<ol>
<li>Value accumulation: <code>SUM</code></li>
<li>Take the greater of the two numbers/dates: <code>BIGGER</code></li>
<li>Take the smaller of two numbers/dates: <code>SMALLER</code></li>
<li><strong>Set</strong> property takes union: <code>UNION</code></li>
<li><strong>Set</strong> attribute intersection: <code>INTERSECTION</code></li>
<li><strong>List</strong> attribute append element: <code>APPEND</code></li>
<li><strong>List/Set</strong> attribute delete element: <code>ELIMINATE</code></li>
<li>Override an existing property: <code>OVERRIDE</code></li>
</ol>
<p><strong>Note:</strong> If the newly imported attribute value is empty, the existing old data will be used instead of the empty value. For the effect, please refer to the following example</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// The update strategy is specified in the JSON file as follows
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;vertices&#34;</span><span style="color:#ce5c00;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;label&#34;</span><span style="color:#ce5c00;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;update_strategies&#34;</span><span style="color:#ce5c00;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SMALLER&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;set&#34;</span><span style="color:#ce5c00;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;UNION&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;input&#34;</span><span style="color:#ce5c00;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;type&#34;</span><span style="color:#ce5c00;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;file&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;path&#34;</span><span style="color:#ce5c00;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex_person.txt&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;format&#34;</span><span style="color:#ce5c00;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;TEXT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;header&#34;</span><span style="color:#ce5c00;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;set&#34;</span><span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// 1. Write a line of data with the OVERRIDE update strategy (null means empty here)
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#4e9a06">&#39;a b null null&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// 2. Write another line
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#4e9a06">&#39;null null c d&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// 3. Finally we can get
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#4e9a06">&#39;a b c d&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// If there is no update strategy, you will get
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#4e9a06">&#39;null null c d&#39;</span>
</span></span></code></pre></div><blockquote>
<p><strong>Note</strong> : After adopting the batch update strategy, the number of disk read requests will increase significantly, and the import speed will be several times slower than that of pure write coverage (at this time HDD disk [IOPS](<a href="https://en.wikipedia">https://en.wikipedia</a> .org/wiki/IOPS) will be the bottleneck, SSD is recommended for speed)</p>
</blockquote>
<p><strong>Unique Nodes for Vertex Maps</strong></p>
<ul>
<li>id: Specify a column as the id column of the vertex. When the vertex id policy is <code>CUSTOMIZE</code>, it is required; when the id policy is <code>PRIMARY_KEY</code>, it must be empty;</li>
</ul>
<p><strong>Unique Nodes for Edge Maps</strong></p>
<ul>
<li>source: Select certain columns of the input source as the id column of <strong>source vertex</strong>. When the id policy of the source vertex is <code>CUSTOMIZE</code>, a certain column must be specified as the id column of the vertex; when the id policy of the source vertex is <code> When PRIMARY_KEY</code>, one or more columns must be specified for splicing the id of the generated vertex, that is, no matter which id strategy is used, this item is required;</li>
<li>target: Specify certain columns as the id columns of <strong>target vertex</strong>, similar to source, so I won&rsquo;t repeat them;</li>
<li>unfold_source: Whether to unfold the source column of the file, the effect is similar to that in the vertex map, and will not be repeated;</li>
<li>unfold_target: Whether to unfold the target column of the file, the effect is similar to that in the vertex mapping, and will not be repeated;</li>
</ul>
<h4 id="34-execute-command-import">3.4 Execute command import</h4>
<p>After preparing the graph model, data file, and input source mapping relationship file, the data file can be imported into the graph database.</p>
<p>The import process is controlled by commands submitted by the user, and the user can control the specific process of execution through different parameters.</p>
<h5 id="341-parameter-description">3.4.1 Parameter description</h5>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Default value</th>
<th>Required or not</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>-f or &ndash;file</td>
<td></td>
<td>Y</td>
<td>path to configure script</td>
</tr>
<tr>
<td>-g or &ndash;graph</td>
<td></td>
<td>Y</td>
<td>graph dbspace</td>
</tr>
<tr>
<td>-s or &ndash;schema</td>
<td></td>
<td>Y</td>
<td>schema file path</td>
</tr>
<tr>
<td>-h or &ndash;host</td>
<td>localhost</td>
<td></td>
<td>address of HugeGraphServer</td>
</tr>
<tr>
<td>-p or &ndash;port</td>
<td>8080</td>
<td></td>
<td>port number of HugeGraphServer</td>
</tr>
<tr>
<td>&ndash;username</td>
<td>null</td>
<td></td>
<td>When HugeGraphServer enables permission authentication, the username of the current graph</td>
</tr>
<tr>
<td>&ndash;token</td>
<td>null</td>
<td></td>
<td>When HugeGraphServer has enabled authorization authentication, the token of the current graph</td>
</tr>
<tr>
<td>&ndash;protocol</td>
<td>http</td>
<td></td>
<td>Protocol for sending requests to the server, optional http or https</td>
</tr>
<tr>
<td>&ndash;trust-store-file</td>
<td></td>
<td></td>
<td>When the request protocol is https, the client&rsquo;s certificate file path</td>
</tr>
<tr>
<td>&ndash;trust-store-password</td>
<td></td>
<td></td>
<td>When the request protocol is https, the client certificate password</td>
</tr>
<tr>
<td>&ndash;clear-all-data</td>
<td>false</td>
<td></td>
<td>Whether to clear the original data on the server before importing data</td>
</tr>
<tr>
<td>&ndash;clear-timeout</td>
<td>240</td>
<td></td>
<td>Timeout for clearing the original data on the server before importing data</td>
</tr>
<tr>
<td>&ndash;incremental-mode</td>
<td>false</td>
<td></td>
<td>Whether to use the breakpoint resume mode, only the input source is FILE and HDFS support this mode, enabling this mode can start the import from the place where the last import stopped</td>
</tr>
<tr>
<td>&ndash;failure-mode</td>
<td>false</td>
<td></td>
<td>When the failure mode is true, the data that failed before will be imported. Generally speaking, the failed data file needs to be manually corrected and edited, and then imported again</td>
</tr>
<tr>
<td>&ndash;batch-insert-threads</td>
<td>CPUs</td>
<td></td>
<td>Batch insert thread pool size (CPUs is the number of <strong>logical cores</strong> available to the current OS)</td>
</tr>
<tr>
<td>&ndash;single-insert-threads</td>
<td>8</td>
<td></td>
<td>Size of single insert thread pool</td>
</tr>
<tr>
<td>&ndash;max-conn</td>
<td>4 * CPUs</td>
<td></td>
<td>The maximum number of HTTP connections between HugeClient and HugeGraphServer, it is recommended to adjust this when <strong>adjusting threads</strong></td>
</tr>
<tr>
<td>&ndash;max-conn-per-route</td>
<td>2 * CPUs</td>
<td></td>
<td>The maximum number of HTTP connections for each route between HugeClient and HugeGraphServer, it is recommended to adjust this item at the same time when <strong>adjusting the thread</strong></td>
</tr>
<tr>
<td>&ndash;batch-size</td>
<td>500</td>
<td></td>
<td>The number of data items in each batch when importing data</td>
</tr>
<tr>
<td>&ndash;max-parse-errors</td>
<td>1</td>
<td></td>
<td>The maximum number of lines of data parsing errors allowed, and the program exits when this value is reached</td>
</tr>
<tr>
<td>&ndash;max-insert-errors</td>
<td>500</td>
<td></td>
<td>The maximum number of rows of data insertion errors allowed, and the program exits when this value is reached</td>
</tr>
<tr>
<td>&ndash;timeout</td>
<td>60</td>
<td></td>
<td>Timeout (seconds) for inserting results to return</td>
</tr>
<tr>
<td>&ndash;shutdown-timeout</td>
<td>10</td>
<td></td>
<td>Waiting time for multithreading to stop (seconds)</td>
</tr>
<tr>
<td>&ndash;retry-times</td>
<td>0</td>
<td></td>
<td>Number of retries when a specific exception occurs</td>
</tr>
<tr>
<td>&ndash;retry-interval</td>
<td>10</td>
<td></td>
<td>interval before retry (seconds)</td>
</tr>
<tr>
<td>&ndash;check-vertex</td>
<td>false</td>
<td></td>
<td>Whether to check whether the vertex connected by the edge exists when inserting the edge</td>
</tr>
<tr>
<td>&ndash;print-progress</td>
<td>true</td>
<td></td>
<td>Whether to print the number of imported items in the console in real time</td>
</tr>
<tr>
<td>&ndash;dry-run</td>
<td>false</td>
<td></td>
<td>Turn on this mode, only parsing but not importing, usually used for testing</td>
</tr>
<tr>
<td>&ndash;help</td>
<td>false</td>
<td></td>
<td>print help information</td>
</tr>
</tbody>
</table>
<h5 id="342-breakpoint-continuation-mode">3.4.2 Breakpoint Continuation Mode</h5>
<p>Usually, the Loader task takes a long time to execute. If the import interrupt process exits for some reason, and next time you want to continue the import from the interrupted point, this is the scenario of using breakpoint continuation.</p>
<p>The user sets the command line parameter &ndash;incremental-mode to true to open the breakpoint resume mode. The key to breakpoint continuation lies in the progress file. When the import process exits, the import progress at the time of exit will be recorded.
Recorded in the progress file, the progress file is located in the <code>${struct}</code> directory, the file name is like <code>load-progress ${date}</code>, ${struct} is the prefix of the mapping file, and ${date} is the start of the import
moment. For example: for an import task started at <code>2019-10-10 12:30:30</code>, the mapping file used is <code>struct-example.json</code>, then the path of the progress file is the same as struct-example.json
Sibling <code>struct-example/load-progress 2019-10-10 12:30:30</code>.</p>
<blockquote>
<p>Note: The generation of progress files is independent of whether &ndash;incremental-mode is turned on or not, and a progress file is generated at the end of each import.</p>
</blockquote>
<p>If the data file formats are all legal and the import task is stopped by the user (CTRL + C or kill, kill -9 is not supported), that is to say, if there is no error record, the next import only needs to be set
Continue for the breakpoint.</p>
<p>But if the limit of &ndash;max-parse-errors or &ndash;max-insert-errors is reached because too much data is invalid or network abnormality is reached, Loader will record these original rows that failed to insert into
In the failed file, after the user modifies the data lines in the failed file, set &ndash;reload-failure to true to import these &ldquo;failed files&rdquo; as input sources (does not affect the normal file import),
Of course, if there is still a problem with the modified data line, it will be logged again to the failure file (don&rsquo;t worry about duplicate lines).</p>
<p>Each vertex map or edge map will generate its own failure file when data insertion fails. The failure file is divided into a parsing failure file (suffix .parse-error) and an insertion failure file (suffix .insert-error).
They are stored in the <code>${struct}/current</code> directory. For example, there is a vertex mapping person and an edge mapping knows in the mapping file, each of which has some error lines. When the Loader exits, in the
You will see the following files in the <code>${struct}/current</code> directory:</p>
<ul>
<li>person-b4cd32ab.parse-error: Vertex map person parses wrong data</li>
<li>person-b4cd32ab.insert-error: Vertex map person inserts wrong data</li>
<li>knows-eb6b2bac.parse-error: edgemap knows parses wrong data</li>
<li>knows-eb6b2bac.insert-error: edgemap knows inserts wrong data</li>
</ul>
<blockquote>
<p>.parse-error and .insert-error do not always exist together. Only lines with parsing errors will have .parse-error files, and only lines with insertion errors will have .insert-error files.</p>
</blockquote>
<h5 id="343-logs-directory-file-description">3.4.3 logs directory file description</h5>
<p>The log and error data during program execution will be written into hugegraph-loader.log file.</p>
<h5 id="344-execute-command">3.4.4 Execute command</h5>
<p>Run bin/hugeloader and pass in parameters</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>bin/hugegraph-loader -g <span style="color:#ce5c00;font-weight:bold">{</span>GRAPH_NAME<span style="color:#ce5c00;font-weight:bold">}</span> -f <span style="color:#4e9a06">${</span><span style="color:#000">INPUT_DESC_FILE</span><span style="color:#4e9a06">}</span> -s <span style="color:#4e9a06">${</span><span style="color:#000">SCHEMA_FILE</span><span style="color:#4e9a06">}</span> -h <span style="color:#ce5c00;font-weight:bold">{</span>HOST<span style="color:#ce5c00;font-weight:bold">}</span> -p <span style="color:#ce5c00;font-weight:bold">{</span>PORT<span style="color:#ce5c00;font-weight:bold">}</span>
</span></span></code></pre></div><h3 id="4-complete-example">4 Complete example</h3>
<p>Given below is an example in the example directory of the hugegraph-loader package.</p>
<h4 id="41-prepare-data">4.1 Prepare data</h4>
<p>Vertex file: <code>example/file/vertex_person.csv</code></p>
<pre tabindex="0"><code class="language-csv" data-lang="csv">marko,29,Beijing
vadas,27,Hongkong
josh,32,Beijing
peter,35,Shanghai
&#34;li,nary&#34;,26,&#34;Wu,han&#34;
</code></pre><p>Vertex file: <code>example/file/vertex_software.txt</code></p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>name|lang|price
</span></span><span style="display:flex;"><span>lop|java|328
</span></span><span style="display:flex;"><span>ripple|java|199
</span></span></code></pre></div><p>Edge file: <code>example/file/edge_knows.json</code></p>
<pre tabindex="0"><code>{&#34;source_name&#34;: &#34;marko&#34;, &#34;target_name&#34;: &#34;vadas&#34;, &#34;date&#34;: &#34;20160110&#34;, &#34;weight&#34;: 0.5}
{&#34;source_name&#34;: &#34;marko&#34;, &#34;target_name&#34;: &#34;josh&#34;, &#34;date&#34;: &#34;20130220&#34;, &#34;weight&#34;: 1.0}
</code></pre><p>Edge file: <code>example/file/edge_created.json</code></p>
<pre tabindex="0"><code>{&#34;aname&#34;: &#34;marko&#34;, &#34;bname&#34;: &#34;lop&#34;, &#34;date&#34;: &#34;20171210&#34;, &#34;weight&#34;: 0.4}
{&#34;aname&#34;: &#34;josh&#34;, &#34;bname&#34;: &#34;lop&#34;, &#34;date&#34;: &#34;20091111&#34;, &#34;weight&#34;: 0.4}
{&#34;aname&#34;: &#34;josh&#34;, &#34;bname&#34;: &#34;ripple&#34;, &#34;date&#34;: &#34;20171210&#34;, &#34;weight&#34;: 1.0}
{&#34;aname&#34;: &#34;peter&#34;, &#34;bname&#34;: &#34;lop&#34;, &#34;date&#34;: &#34;20170324&#34;, &#34;weight&#34;: 0.2}
</code></pre><h4 id="42-write-schema">4.2 Write schema</h4>
<p>schema file: <code>example/file/schema.groovy</code></p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asInt</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asDouble</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asDouble</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByName&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onV</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">secondary</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByAge&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onV</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">range</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByCity&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onV</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">secondary</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByAgeAndCity&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onV</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">secondary</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;softwareByPrice&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onV</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">range</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">sourceLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">targetLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">sourceLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">targetLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;createdByDate&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onE</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">secondary</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;createdByWeight&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onE</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">range</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knowsByWeight&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onE</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">range</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span></code></pre></div><h4 id="43-write-the-input-source-mapping-file-examplefilestructjson">4.3 Write the input source mapping file <code>example/file/struct.json</code></h4>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;input&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;file&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;path&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;example/vertex_person.csv&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CSV&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;header&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;charset&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;UTF-8&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;mapping&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;city&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;input&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;file&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;path&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;example/vertex_software.text&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;TEXT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;delimiter&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;|&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;charset&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;GBK&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;edges&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;source_name&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;input&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;file&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;path&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;example/edge_knows.json&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;JSON&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;mapping&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;aname&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;bname&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;input&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;file&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;path&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;example/edge_created.json&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;JSON&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;mapping&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;aname&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;bname&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="44-command-to-import">4.4 Command to import</h4>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sh bin/hugegraph-loader.sh -g hugegraph -f example/file/struct.json -s example/file/schema.groovy
</span></span></code></pre></div><p>After the import is complete, statistics similar to the following will appear:</p>
<pre tabindex="0"><code>vertices/edges has been loaded this time : 8/6
--------------------------------------------------
count metrics
input read success : 14
input read failure : 0
vertex parse success : 8
vertex parse failure : 0
vertex insert success : 8
vertex insert failure : 0
edge parse success : 6
edge parse failure : 0
edge insert success : 6
edge insert failure : 0
</code></pre>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-06d4cae527789fcda01ebf4e48c6559f">3.3 - HugeGraph-Tools Quick Start</h1>
<h3 id="1-hugegraph-tools概述">1 HugeGraph-Tools概述</h3>
<p>HugeGraph-Tools 是 HugeGragh 的自动化部署、管理和备份/还原组件。</p>
<h3 id="2-获取-hugegraph-tools">2 获取 HugeGraph-Tools</h3>
<p>有两种方式可以获取 HugeGraph-Tools:</p>
<ul>
<li>下载二进制tar包</li>
<li>下载源码编译安装</li>
</ul>
<h4 id="21-下载二进制tar包">2.1 下载二进制tar包</h4>
<p>下载最新版本的 HugeGraph-Tools 包:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>wget https://github.com/hugegraph/hugegraph-tools/releases/download/v<span style="color:#4e9a06">${</span><span style="color:#000">version</span><span style="color:#4e9a06">}</span>/hugegraph-tools-<span style="color:#4e9a06">${</span><span style="color:#000">version</span><span style="color:#4e9a06">}</span>.tar.gz
</span></span><span style="display:flex;"><span>tar zxvf hugegraph-tools-<span style="color:#4e9a06">${</span><span style="color:#000">version</span><span style="color:#4e9a06">}</span>.tar.gz
</span></span></code></pre></div><h4 id="22-下载源码编译安装">2.2 下载源码编译安装</h4>
<p>下载最新版本的 HugeGraph-Tools 源码包:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>$ git clone https://github.com/hugegraph/hugegraph-tools.git
</span></span></code></pre></div><p>编译生成 tar 包:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#204a87">cd</span> hugegraph-tools
</span></span><span style="display:flex;"><span>mvn package -DskipTests
</span></span></code></pre></div><p>生成 tar 包 hugegraph-tools-${version}.tar.gz</p>
<h3 id="3-使用">3 使用</h3>
<h4 id="31-功能概览">3.1 功能概览</h4>
<p>解压后,进入 hugegraph-tools 目录,可以使用<code>bin/hugegraph</code>或者<code>bin/hugegraph help</code>来查看 usage 信息。主要分为:</p>
<ul>
<li>图管理类,graph-mode-set、graph-mode-get、graph-list、graph-get 和 graph-clear</li>
<li>异步任务管理类,task-list、task-get、task-delete、task-cancel 和 task-clear</li>
<li>Gremlin类,gremlin-execute 和 gremlin-schedule</li>
<li>备份/恢复类,backup、restore、migrate、schedule-backup 和 dump</li>
<li>安装部署类,deploy、clear、start-all 和 stop-all</li>
</ul>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>Usage: hugegraph <span style="color:#ce5c00;font-weight:bold">[</span>options<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>command<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#204a87">command</span> options<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span></code></pre></div><h5 id="32-options-全局变量">3.2 [options]-全局变量</h5>
<p><code>options</code>是 HugeGraph-Tools 的全局变量,可以在 hugegraph-tools/bin/hugegraph 中配置,包括:</p>
<ul>
<li>&ndash;graph,HugeGraph-Tools 操作的图的名字,默认值是 hugegraph</li>
<li>&ndash;url,HugeGraph-Server 的服务地址,默认是 http://127.0.0.1:8080</li>
<li>&ndash;user,当 HugeGraph-Server 开启认证时,传递用户名</li>
<li>&ndash;password,当 HugeGraph-Server 开启认证时,传递用户的密码</li>
<li>&ndash;timeout,连接 HugeGraph-Server 时的超时时间,默认是 30s</li>
<li>&ndash;trust-store-file,证书文件的路径,当 &ndash;url 使用 https 时,HugeGraph-Client 使用的 truststore 文件,默认为空,代表使用 hugegraph-tools 内置的 truststore 文件 conf/hugegraph.truststore</li>
<li>&ndash;trust-store-password,证书文件的密码,当 &ndash;url 使用 https 时,HugeGraph-Client 使用的 truststore 的密码,默认为空,代表使用 hugegraph-tools 内置的 truststore 文件的密码</li>
</ul>
<p>上述全局变量,也可以通过环境变量来设置。一种方式是在命令行使用 export 设置临时环境变量,在该命令行关闭之前均有效</p>
<table>
<thead>
<tr>
<th>全局变量</th>
<th>环境变量</th>
<th>示例</th>
</tr>
</thead>
<tbody>
<tr>
<td>&ndash;url</td>
<td>HUGEGRAPH_URL</td>
<td>export HUGEGRAPH_URL=http://127.0.0.1:8080</td>
</tr>
<tr>
<td>&ndash;graph</td>
<td>HUGEGRAPH_GRAPH</td>
<td>export HUGEGRAPH_GRAPH=hugegraph</td>
</tr>
<tr>
<td>&ndash;user</td>
<td>HUGEGRAPH_USERNAME</td>
<td>export HUGEGRAPH_USERNAME=admin</td>
</tr>
<tr>
<td>&ndash;password</td>
<td>HUGEGRAPH_PASSWORD</td>
<td>export HUGEGRAPH_PASSWORD=test</td>
</tr>
<tr>
<td>&ndash;timeout</td>
<td>HUGEGRAPH_TIMEOUT</td>
<td>export HUGEGRAPH_TIMEOUT=30</td>
</tr>
<tr>
<td>&ndash;trust-store-file</td>
<td>HUGEGRAPH_TRUST_STORE_FILE</td>
<td>export HUGEGRAPH_TRUST_STORE_FILE=/tmp/trust-store</td>
</tr>
<tr>
<td>&ndash;trust-store-password</td>
<td>HUGEGRAPH_TRUST_STORE_PASSWORD</td>
<td>export HUGEGRAPH_TRUST_STORE_PASSWORD=xxxx</td>
</tr>
</tbody>
</table>
<p>另一种方式是在 bin/hugegraph 脚本中设置环境变量:</p>
<pre tabindex="0"><code>#!/bin/bash
# Set environment here if needed
#export HUGEGRAPH_URL=
#export HUGEGRAPH_GRAPH=
#export HUGEGRAPH_USERNAME=
#export HUGEGRAPH_PASSWORD=
#export HUGEGRAPH_TIMEOUT=
#export HUGEGRAPH_TRUST_STORE_FILE=
#export HUGEGRAPH_TRUST_STORE_PASSWORD=
</code></pre><h5 id="33-图管理类graph-mode-setgraph-mode-getgraph-listgraph-get和graph-clear">3.3 图管理类,graph-mode-set、graph-mode-get、graph-list、graph-get和graph-clear</h5>
<ul>
<li>graph-mode-set,设置图的 restore mode
<ul>
<li>&ndash;graph-mode 或者 -m,必填项,指定将要设置的模式,合法值包括 [NONE, RESTORING, MERGING, LOADING]</li>
</ul>
</li>
<li>graph-mode-get,获取图的 restore mode</li>
<li>graph-list,列出某个 HugeGraph-Server 中全部的图</li>
<li>graph-get,获取某个图及其存储后端类型</li>
<li>graph-clear,清除某个图的全部 schema 和 data
<ul>
<li>&ndash;confirm-message 或者 -c,必填项,删除确认信息,需要手动输入,二次确认防止误删,&ldquo;I&rsquo;m sure to delete all data&rdquo;,包括双引号</li>
</ul>
</li>
</ul>
<blockquote>
<p>当需要把备份的图原样恢复到一个新的图中的时候,需要先将图模式设置为 RESTORING 模式;当需要将备份的图合并到已存在的图中时,需要先将图模式设置为 MERGING 模式。</p>
</blockquote>
<h5 id="34-异步任务管理类task-listtask-get和task-delete">3.4 异步任务管理类,task-list、task-get和task-delete</h5>
<ul>
<li>task-list,列出某个图中的异步任务,可以根据任务的状态过滤
<ul>
<li>&ndash;status,选填项,指定要查看的任务的状态,即按状态过滤任务</li>
<li>&ndash;limit,选填项,指定要获取的任务的数目,默认为 -1,意思为获取全部符合条件的任务</li>
</ul>
</li>
<li>task-get,获取某个异步任务的详细信息
<ul>
<li>&ndash;task-id,必填项,指定异步任务的 ID</li>
</ul>
</li>
<li>task-delete,删除某个异步任务的信息
<ul>
<li>&ndash;task-id,必填项,指定异步任务的 ID</li>
</ul>
</li>
<li>task-cancel,取消某个异步任务的执行
<ul>
<li>&ndash;task-id,要取消的异步任务的 ID</li>
</ul>
</li>
<li>task-clear,清理完成的异步任务
<ul>
<li>&ndash;force,选填项,设置时,表示清理全部异步任务,未执行完成的先取消,然后清除所有异步任务。默认只清理已完成的异步任务</li>
</ul>
</li>
</ul>
<h5 id="35-gremlin类gremlin-execute和gremlin-schedule">3.5 Gremlin类,gremlin-execute和gremlin-schedule</h5>
<ul>
<li>gremlin-execute,发送 Gremlin 语句到 HugeGraph-Server 来执行查询或修改操作,同步执行,结束后返回结果
<ul>
<li>&ndash;file 或者 -f,指定要执行的脚本文件,UTF-8编码,与 &ndash;script 互斥</li>
<li>&ndash;script 或者 -s,指定要执行的脚本字符串,与 &ndash;file 互斥</li>
<li>&ndash;aliases 或者 -a,Gremlin 别名设置,格式为:key1=value1,key2=value2,&hellip;</li>
<li>&ndash;bindings 或者 -b,Gremlin 绑定设置,格式为:key1=value1,key2=value2,&hellip;</li>
<li>&ndash;language 或者 -l,Gremlin 脚本的语言,默认为 gremlin-groovy</li>
</ul>
<blockquote>
<p>&ndash;file 和 &ndash;script 二者互斥,必须设置其中之一</p>
</blockquote>
</li>
<li>gremlin-schedule,发送 Gremlin 语句到 HugeGraph-Server 来执行查询或修改操作,异步执行,任务提交后立刻返回异步任务id
<ul>
<li>&ndash;file 或者 -f,指定要执行的脚本文件,UTF-8编码,与 &ndash;script 互斥</li>
<li>&ndash;script 或者 -s,指定要执行的脚本字符串,与 &ndash;file 互斥</li>
<li>&ndash;bindings 或者 -b,Gremlin 绑定设置,格式为:key1=value1,key2=value2,&hellip;</li>
<li>&ndash;language 或者 -l,Gremlin 脚本的语言,默认为 gremlin-groovy</li>
</ul>
<blockquote>
<p>&ndash;file 和 &ndash;script 二者互斥,必须设置其中之一</p>
</blockquote>
</li>
</ul>
<h5 id="36-备份恢复类">3.6 备份/恢复类</h5>
<ul>
<li>backup,将某张图中的 schema 或者 data 备份到 HugeGraph 系统之外,以 JSON 形式存在本地磁盘或者 HDFS
<ul>
<li>&ndash;format,备份的格式,可选值包括 [json, text],默认为 json</li>
<li>&ndash;all-properties,是否备份顶点/边全部的属性,仅在 &ndash;format 为 text 是有效,默认 false</li>
<li>&ndash;label,要备份的顶点/边的类型,仅在 &ndash;format 为 text 是有效,只有备份顶点或者边的时候有效</li>
<li>&ndash;properties,要备份的顶点/边的属性,逗号分隔,仅在 &ndash;format 为 text 是有效,只有备份顶点或者边的时候有效</li>
<li>&ndash;compress,备份时是否压缩数据,默认为 true</li>
<li>&ndash;directory 或者 -d,存储 schema 或者 data 的目录,本地目录时,默认为&rsquo;./{graphName}&rsquo;,HDFS 时,默认为 &lsquo;{fs.default.name}/{graphName}&rsquo;</li>
<li>&ndash;huge-types 或者 -t,要备份的数据类型,逗号分隔,可选值为 &lsquo;all&rsquo; 或者 一个或多个 [vertex,edge,vertex_label,edge_label,property_key,index_label] 的组合,&lsquo;all&rsquo; 代表全部6种类型,即顶点、边和所有schema</li>
<li>&ndash;log 或者 -l,指定日志目录,默认为当前目录</li>
<li>&ndash;retry,指定失败重试次数,默认为 3</li>
<li>&ndash;split-size 或者 -s,指定在备份时对顶点或者边分块的大小,默认为 1048576</li>
<li>-D,用 -Dkey=value 的模式指定动态参数,用来备份数据到 HDFS 时,指定 HDFS 的配置项,例如:-Dfs.default.name=hdfs://localhost:9000</li>
</ul>
</li>
<li>restore,将 JSON 格式存储的 schema 或者 data 恢复到一个新图中(RESTORING 模式)或者合并到已存在的图中(MERGING 模式)
<ul>
<li>&ndash;directory 或者 -d,存储 schema 或者 data 的目录,本地目录时,默认为&rsquo;./{graphName}&rsquo;,HDFS 时,默认为 &lsquo;{fs.default.name}/{graphName}&rsquo;</li>
<li>&ndash;clean,是否在恢复图完成后删除 &ndash;directory 指定的目录,默认为 false</li>
<li>&ndash;huge-types 或者 -t,要恢复的数据类型,逗号分隔,可选值为 &lsquo;all&rsquo; 或者 一个或多个 [vertex,edge,vertex_label,edge_label,property_key,index_label] 的组合,&lsquo;all&rsquo; 代表全部6种类型,即顶点、边和所有schema</li>
<li>&ndash;log 或者 -l,指定日志目录,默认为当前目录</li>
<li>&ndash;retry,指定失败重试次数,默认为 3</li>
<li>-D,用 -Dkey=value 的模式指定动态参数,用来从 HDFS 恢复图时,指定 HDFS 的配置项,例如:-Dfs.default.name=hdfs://localhost:9000</li>
</ul>
<blockquote>
<p>只有当 &ndash;format 为 json 执行 backup 时,才可以使用 restore 命令恢复</p>
</blockquote>
</li>
<li>migrate, 将当前连接的图迁移至另一个 HugeGraphServer 中
<ul>
<li>&ndash;target-graph,目标图的名字,默认为 hugegraph</li>
<li>&ndash;target-url,目标图所在的 HugeGraphServer,默认为 http://127.0.0.1:8081</li>
<li>&ndash;target-username,访问目标图的用户名</li>
<li>&ndash;target-password,访问目标图的密码</li>
<li>&ndash;target-timeout,访问目标图的超时时间</li>
<li>&ndash;target-trust-store-file,访问目标图使用的 truststore 文件</li>
<li>&ndash;target-trust-store-password,访问目标图使用的 truststore 的密码</li>
<li>&ndash;directory 或者 -d,迁移过程中,存储源图的 schema 或者 data 的目录,本地目录时,默认为&rsquo;./{graphName}&rsquo;,HDFS 时,默认为 &lsquo;{fs.default.name}/{graphName}&rsquo;</li>
<li>&ndash;huge-types 或者 -t,要迁移的数据类型,逗号分隔,可选值为 &lsquo;all&rsquo; 或者 一个或多个 [vertex,edge,vertex_label,edge_label,property_key,index_label] 的组合,&lsquo;all&rsquo; 代表全部6种类型,即顶点、边和所有schema</li>
<li>&ndash;log 或者 -l,指定日志目录,默认为当前目录</li>
<li>&ndash;retry,指定失败重试次数,默认为 3</li>
<li>&ndash;split-size 或者 -s,指定迁移过程中对源图进行备份时顶点或者边分块的大小,默认为 1048576</li>
<li>-D,用 -Dkey=value 的模式指定动态参数,用来在迁移图过程中需要备份数据到 HDFS 时,指定 HDFS 的配置项,例如:-Dfs.default.name=hdfs://localhost:9000</li>
<li>&ndash;graph-mode 或者 -m,将源图恢复到目标图时将目标图设置的模式,合法值包括 [RESTORING, MERGING]</li>
<li>&ndash;keep-local-data,是否保留在迁移图的过程中产生的源图的备份,默认为 false,即默认迁移图结束后不保留产生的源图备份</li>
</ul>
</li>
<li>schedule-backup,周期性对图执行备份操作,并保留一定数目的最新备份(目前仅支持本地文件系统)
<ul>
<li>&ndash;directory 或者 -d,必填项,指定备份数据的目录</li>
<li>&ndash;backup-num,选填项,指定保存的最新的备份的数目,默认为 3</li>
<li>&ndash;interval,选填项,指定进行备份的周期,格式同 Linux crontab 格式</li>
</ul>
</li>
<li>dump,把整张图的顶点和边全部导出,默认以<code>vertex vertex-edge1 vertex-edge2...</code>JSON格式存储。
用户也可以自定义存储格式,只需要在<code>hugegraph-tools/src/main/java/com/baidu/hugegraph/formatter</code>
目录下实现一个继承自<code>Formatter</code>的类,例如<code>CustomFormatter</code>,使用时指定该类为formatter即可,例如
<code>bin/hugegraph dump -f CustomFormatter</code>
<ul>
<li>&ndash;formatter 或者 -f,指定使用的 formatter,默认为 JsonFormatter</li>
<li>&ndash;directory 或者 -d,存储 schema 或者 data 的目录,默认为当前目录</li>
<li>&ndash;log 或者 -l,指定日志目录,默认为当前目录</li>
<li>&ndash;retry,指定失败重试次数,默认为 3</li>
<li>&ndash;split-size 或者 -s,指定在备份时对顶点或者边分块的大小,默认为 1048576</li>
<li>-D,用 -Dkey=value 的模式指定动态参数,用来备份数据到 HDFS 时,指定 HDFS 的配置项,例如:-Dfs.default.name=hdfs://localhost:9000</li>
</ul>
</li>
</ul>
<h5 id="37-安装部署类">3.7 安装部署类</h5>
<ul>
<li>deploy,一键下载、安装和启动 HugeGraph-Server 和 HugeGraph-Studio
<ul>
<li>-v,必填项,指明安装的 HugeGraph-Server 和 HugeGraph-Studio 的版本号,最新的是 0.9</li>
<li>-p,必填项,指定安装的 HugeGraph-Server 和 HugeGraph-Studio 目录</li>
<li>-u,选填项,指定下载 HugeGraph-Server 和 HugeGraph-Studio 压缩包的链接</li>
</ul>
</li>
<li>clear,清理 HugeGraph-Server 和 HugeGraph-Studio 目录和tar包
<ul>
<li>-p,必填项,指定要清理的 HugeGraph-Server 和 HugeGraph-Studio 的目录</li>
</ul>
</li>
<li>start-all,一键启动 HugeGraph-Server 和 HugeGraph-Studio,并启动监控,服务死掉时自动拉起服务
<ul>
<li>-v,必填项,指明要启动的 HugeGraph-Server 和 HugeGraph-Studio 的版本号,最新的是 0.9</li>
<li>-p,必填项,指定安装了 HugeGraph-Server 和 HugeGraph-Studio 的目录</li>
</ul>
</li>
<li>stop-all,一键关闭 HugeGraph-Server 和 HugeGraph-Studio</li>
</ul>
<blockquote>
<p>deploy命令中有可选参数 -u,提供时会使用指定的下载地址替代默认下载地址下载 tar 包,并且将地址写入<code>~/hugegraph-download-url-prefix</code>文件中;之后如果不指定地址时,会优先从<code>~/hugegraph-download-url-prefix</code>指定的地址下载 tar 包;如果 -u 和<code>~/hugegraph-download-url-prefix</code>都没有时,会从默认下载地址进行下载</p>
</blockquote>
<h5 id="38-具体命令参数">3.8 具体命令参数</h5>
<p>各子命令的具体参数如下:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>Usage: hugegraph <span style="color:#ce5c00;font-weight:bold">[</span>options<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>command<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#204a87">command</span> options<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Options:
</span></span><span style="display:flex;"><span> --graph
</span></span><span style="display:flex;"><span> Name of graph
</span></span><span style="display:flex;"><span> Default: hugegraph
</span></span><span style="display:flex;"><span> --password
</span></span><span style="display:flex;"><span> Password of user
</span></span><span style="display:flex;"><span> --timeout
</span></span><span style="display:flex;"><span> Connection timeout
</span></span><span style="display:flex;"><span> Default: <span style="color:#0000cf;font-weight:bold">30</span>
</span></span><span style="display:flex;"><span> --trust-store-file
</span></span><span style="display:flex;"><span> The path of client truststore file used when https protocol is enabled
</span></span><span style="display:flex;"><span> --trust-store-password
</span></span><span style="display:flex;"><span> The password of the client truststore file used when the https protocol
</span></span><span style="display:flex;"><span> is enabled
</span></span><span style="display:flex;"><span> --url
</span></span><span style="display:flex;"><span> The URL of HugeGraph-Server
</span></span><span style="display:flex;"><span> Default: http://127.0.0.1:8080
</span></span><span style="display:flex;"><span> --user
</span></span><span style="display:flex;"><span> Name of user
</span></span><span style="display:flex;"><span> Commands:
</span></span><span style="display:flex;"><span> graph-list List all graphs
</span></span><span style="display:flex;"><span> Usage: graph-list
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> graph-get Get graph info
</span></span><span style="display:flex;"><span> Usage: graph-get
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> graph-clear Clear graph schema and data
</span></span><span style="display:flex;"><span> Usage: graph-clear <span style="color:#ce5c00;font-weight:bold">[</span>options<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Options:
</span></span><span style="display:flex;"><span> * --confirm-message, -c
</span></span><span style="display:flex;"><span> Confirm message of graph clear is <span style="color:#4e9a06">&#34;I&#39;m sure to delete all data&#34;</span>.
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">(</span>Note: include <span style="color:#4e9a06">&#34;&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> graph-mode-set Set graph mode
</span></span><span style="display:flex;"><span> Usage: graph-mode-set <span style="color:#ce5c00;font-weight:bold">[</span>options<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Options:
</span></span><span style="display:flex;"><span> * --graph-mode, -m
</span></span><span style="display:flex;"><span> Graph mode, include: <span style="color:#ce5c00;font-weight:bold">[</span>NONE, RESTORING, MERGING<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Possible Values: <span style="color:#ce5c00;font-weight:bold">[</span>NONE, RESTORING, MERGING, LOADING<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> graph-mode-get Get graph mode
</span></span><span style="display:flex;"><span> Usage: graph-mode-get
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> task-list List tasks
</span></span><span style="display:flex;"><span> Usage: task-list <span style="color:#ce5c00;font-weight:bold">[</span>options<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Options:
</span></span><span style="display:flex;"><span> --limit
</span></span><span style="display:flex;"><span> Limit number, no limit <span style="color:#204a87;font-weight:bold">if</span> not provided
</span></span><span style="display:flex;"><span> Default: -1
</span></span><span style="display:flex;"><span> --status
</span></span><span style="display:flex;"><span> Status of task
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> task-get Get task info
</span></span><span style="display:flex;"><span> Usage: task-get <span style="color:#ce5c00;font-weight:bold">[</span>options<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Options:
</span></span><span style="display:flex;"><span> * --task-id
</span></span><span style="display:flex;"><span> Task id
</span></span><span style="display:flex;"><span> Default: <span style="color:#0000cf;font-weight:bold">0</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> task-delete Delete task
</span></span><span style="display:flex;"><span> Usage: task-delete <span style="color:#ce5c00;font-weight:bold">[</span>options<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Options:
</span></span><span style="display:flex;"><span> * --task-id
</span></span><span style="display:flex;"><span> Task id
</span></span><span style="display:flex;"><span> Default: <span style="color:#0000cf;font-weight:bold">0</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> task-cancel Cancel task
</span></span><span style="display:flex;"><span> Usage: task-cancel <span style="color:#ce5c00;font-weight:bold">[</span>options<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Options:
</span></span><span style="display:flex;"><span> * --task-id
</span></span><span style="display:flex;"><span> Task id
</span></span><span style="display:flex;"><span> Default: <span style="color:#0000cf;font-weight:bold">0</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> task-clear Clear completed tasks
</span></span><span style="display:flex;"><span> Usage: task-clear <span style="color:#ce5c00;font-weight:bold">[</span>options<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Options:
</span></span><span style="display:flex;"><span> --force
</span></span><span style="display:flex;"><span> Force to clear all tasks, cancel all uncompleted tasks firstly,
</span></span><span style="display:flex;"><span> and delete all completed tasks
</span></span><span style="display:flex;"><span> Default: <span style="color:#204a87">false</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> gremlin-execute Execute Gremlin statements
</span></span><span style="display:flex;"><span> Usage: gremlin-execute <span style="color:#ce5c00;font-weight:bold">[</span>options<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Options:
</span></span><span style="display:flex;"><span> --aliases, -a
</span></span><span style="display:flex;"><span> Gremlin aliases, valid format is: <span style="color:#4e9a06">&#39;key1=value1,key2=value2...&#39;</span>
</span></span><span style="display:flex;"><span> Default: <span style="color:#ce5c00;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> --bindings, -b
</span></span><span style="display:flex;"><span> Gremlin bindings, valid format is: <span style="color:#4e9a06">&#39;key1=value1,key2=value2...&#39;</span>
</span></span><span style="display:flex;"><span> Default: <span style="color:#ce5c00;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> --file, -f
</span></span><span style="display:flex;"><span> Gremlin Script file to be executed, UTF-8 encoded, exclusive to
</span></span><span style="display:flex;"><span> --script
</span></span><span style="display:flex;"><span> --language, -l
</span></span><span style="display:flex;"><span> Gremlin script language
</span></span><span style="display:flex;"><span> Default: gremlin-groovy
</span></span><span style="display:flex;"><span> --script, -s
</span></span><span style="display:flex;"><span> Gremlin script to be executed, exclusive to --file
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> gremlin-schedule Execute Gremlin statements as asynchronous job
</span></span><span style="display:flex;"><span> Usage: gremlin-schedule <span style="color:#ce5c00;font-weight:bold">[</span>options<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Options:
</span></span><span style="display:flex;"><span> --bindings, -b
</span></span><span style="display:flex;"><span> Gremlin bindings, valid format is: <span style="color:#4e9a06">&#39;key1=value1,key2=value2...&#39;</span>
</span></span><span style="display:flex;"><span> Default: <span style="color:#ce5c00;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> --file, -f
</span></span><span style="display:flex;"><span> Gremlin Script file to be executed, UTF-8 encoded, exclusive to
</span></span><span style="display:flex;"><span> --script
</span></span><span style="display:flex;"><span> --language, -l
</span></span><span style="display:flex;"><span> Gremlin script language
</span></span><span style="display:flex;"><span> Default: gremlin-groovy
</span></span><span style="display:flex;"><span> --script, -s
</span></span><span style="display:flex;"><span> Gremlin script to be executed, exclusive to --file
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> backup Backup graph schema/data. If directory is on HDFS, use -D to
</span></span><span style="display:flex;"><span> <span style="color:#204a87">set</span> HDFS params. For exmaple:
</span></span><span style="display:flex;"><span> -Dfs.default.name<span style="color:#ce5c00;font-weight:bold">=</span>hdfs://localhost:9000
</span></span><span style="display:flex;"><span> Usage: backup <span style="color:#ce5c00;font-weight:bold">[</span>options<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Options:
</span></span><span style="display:flex;"><span> --all-properties
</span></span><span style="display:flex;"><span> All properties to be backup flag
</span></span><span style="display:flex;"><span> Default: <span style="color:#204a87">false</span>
</span></span><span style="display:flex;"><span> --compress
</span></span><span style="display:flex;"><span> compress flag
</span></span><span style="display:flex;"><span> Default: <span style="color:#204a87">true</span>
</span></span><span style="display:flex;"><span> --directory, -d
</span></span><span style="display:flex;"><span> Directory of graph schema/data, default is <span style="color:#4e9a06">&#39;./{graphname}&#39;</span> in
</span></span><span style="display:flex;"><span> <span style="color:#204a87">local</span> file system or <span style="color:#4e9a06">&#39;{fs.default.name}/{graphname}&#39;</span> in HDFS
</span></span><span style="display:flex;"><span> --format
</span></span><span style="display:flex;"><span> File format, valid is <span style="color:#ce5c00;font-weight:bold">[</span>json, text<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Default: json
</span></span><span style="display:flex;"><span> --huge-types, -t
</span></span><span style="display:flex;"><span> Type of schema/data. Concat with <span style="color:#4e9a06">&#39;,&#39;</span> <span style="color:#204a87;font-weight:bold">if</span> more than one. <span style="color:#4e9a06">&#39;all&#39;</span> means
</span></span><span style="display:flex;"><span> all vertices, edges and schema, in other words, <span style="color:#4e9a06">&#39;all&#39;</span> equals with
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#39;vertex,edge,vertex_label,edge_label,property_key,index_label&#39;</span>
</span></span><span style="display:flex;"><span> Default: <span style="color:#ce5c00;font-weight:bold">[</span>PROPERTY_KEY, VERTEX_LABEL, EDGE_LABEL, INDEX_LABEL, VERTEX, EDGE<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> --label
</span></span><span style="display:flex;"><span> Vertex or edge label, only valid when <span style="color:#204a87">type</span> is vertex or edge
</span></span><span style="display:flex;"><span> --log, -l
</span></span><span style="display:flex;"><span> Directory of log
</span></span><span style="display:flex;"><span> Default: ./logs
</span></span><span style="display:flex;"><span> --properties
</span></span><span style="display:flex;"><span> Vertex or edge properties to backup, only valid when <span style="color:#204a87">type</span> is
</span></span><span style="display:flex;"><span> vertex or edge
</span></span><span style="display:flex;"><span> Default: <span style="color:#ce5c00;font-weight:bold">[]</span>
</span></span><span style="display:flex;"><span> --retry
</span></span><span style="display:flex;"><span> Retry times, default is <span style="color:#0000cf;font-weight:bold">3</span>
</span></span><span style="display:flex;"><span> Default: <span style="color:#0000cf;font-weight:bold">3</span>
</span></span><span style="display:flex;"><span> --split-size, -s
</span></span><span style="display:flex;"><span> Split size of shard
</span></span><span style="display:flex;"><span> Default: <span style="color:#0000cf;font-weight:bold">1048576</span>
</span></span><span style="display:flex;"><span> -D
</span></span><span style="display:flex;"><span> HDFS config parameters
</span></span><span style="display:flex;"><span> Syntax: -Dkey<span style="color:#ce5c00;font-weight:bold">=</span>value
</span></span><span style="display:flex;"><span> Default: <span style="color:#ce5c00;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> schedule-backup Schedule backup task
</span></span><span style="display:flex;"><span> Usage: schedule-backup <span style="color:#ce5c00;font-weight:bold">[</span>options<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Options:
</span></span><span style="display:flex;"><span> --backup-num
</span></span><span style="display:flex;"><span> The number of latest backups to keep
</span></span><span style="display:flex;"><span> Default: <span style="color:#0000cf;font-weight:bold">3</span>
</span></span><span style="display:flex;"><span> * --directory, -d
</span></span><span style="display:flex;"><span> The directory of backups stored
</span></span><span style="display:flex;"><span> --interval
</span></span><span style="display:flex;"><span> The interval of backup, format is: <span style="color:#4e9a06">&#34;a b c d e&#34;</span>. <span style="color:#4e9a06">&#39;a&#39;</span> means minute
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#0000cf;font-weight:bold">0</span> - 59<span style="color:#ce5c00;font-weight:bold">)</span>, <span style="color:#4e9a06">&#39;b&#39;</span> means hour <span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#0000cf;font-weight:bold">0</span> - 23<span style="color:#ce5c00;font-weight:bold">)</span>, <span style="color:#4e9a06">&#39;c&#39;</span> means day of month <span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#0000cf;font-weight:bold">1</span> -
</span></span><span style="display:flex;"><span> 31<span style="color:#ce5c00;font-weight:bold">)</span>, <span style="color:#4e9a06">&#39;d&#39;</span> means month <span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#0000cf;font-weight:bold">1</span> - 12<span style="color:#ce5c00;font-weight:bold">)</span>, <span style="color:#4e9a06">&#39;e&#39;</span> means day of week <span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#0000cf;font-weight:bold">0</span> - 6<span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">Sunday</span><span style="color:#ce5c00;font-weight:bold">=</span>0<span style="color:#ce5c00;font-weight:bold">)</span>, <span style="color:#4e9a06">&#34;*&#34;</span> means all
</span></span><span style="display:flex;"><span> Default: <span style="color:#4e9a06">&#34;0 0 * * *&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> dump Dump graph to files
</span></span><span style="display:flex;"><span> Usage: dump <span style="color:#ce5c00;font-weight:bold">[</span>options<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Options:
</span></span><span style="display:flex;"><span> --directory, -d
</span></span><span style="display:flex;"><span> Directory of graph schema/data, default is <span style="color:#4e9a06">&#39;./{graphname}&#39;</span> in
</span></span><span style="display:flex;"><span> <span style="color:#204a87">local</span> file system or <span style="color:#4e9a06">&#39;{fs.default.name}/{graphname}&#39;</span> in HDFS
</span></span><span style="display:flex;"><span> --formatter, -f
</span></span><span style="display:flex;"><span> Formatter to customize format of vertex/edge
</span></span><span style="display:flex;"><span> Default: JsonFormatter
</span></span><span style="display:flex;"><span> --log, -l
</span></span><span style="display:flex;"><span> Directory of log
</span></span><span style="display:flex;"><span> Default: ./logs
</span></span><span style="display:flex;"><span> --retry
</span></span><span style="display:flex;"><span> Retry times, default is <span style="color:#0000cf;font-weight:bold">3</span>
</span></span><span style="display:flex;"><span> Default: <span style="color:#0000cf;font-weight:bold">3</span>
</span></span><span style="display:flex;"><span> --split-size, -s
</span></span><span style="display:flex;"><span> Split size of shard
</span></span><span style="display:flex;"><span> Default: <span style="color:#0000cf;font-weight:bold">1048576</span>
</span></span><span style="display:flex;"><span> -D
</span></span><span style="display:flex;"><span> HDFS config parameters
</span></span><span style="display:flex;"><span> Syntax: -Dkey<span style="color:#ce5c00;font-weight:bold">=</span>value
</span></span><span style="display:flex;"><span> Default: <span style="color:#ce5c00;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> restore Restore graph schema/data. If directory is on HDFS, use -D to
</span></span><span style="display:flex;"><span> <span style="color:#204a87">set</span> HDFS params <span style="color:#204a87;font-weight:bold">if</span> needed. For
</span></span><span style="display:flex;"><span> exmaple:-Dfs.default.name<span style="color:#ce5c00;font-weight:bold">=</span>hdfs://localhost:9000
</span></span><span style="display:flex;"><span> Usage: restore <span style="color:#ce5c00;font-weight:bold">[</span>options<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Options:
</span></span><span style="display:flex;"><span> --clean
</span></span><span style="display:flex;"><span> Whether to remove the directory of graph data after restored
</span></span><span style="display:flex;"><span> Default: <span style="color:#204a87">false</span>
</span></span><span style="display:flex;"><span> --directory, -d
</span></span><span style="display:flex;"><span> Directory of graph schema/data, default is <span style="color:#4e9a06">&#39;./{graphname}&#39;</span> in
</span></span><span style="display:flex;"><span> <span style="color:#204a87">local</span> file system or <span style="color:#4e9a06">&#39;{fs.default.name}/{graphname}&#39;</span> in HDFS
</span></span><span style="display:flex;"><span> --huge-types, -t
</span></span><span style="display:flex;"><span> Type of schema/data. Concat with <span style="color:#4e9a06">&#39;,&#39;</span> <span style="color:#204a87;font-weight:bold">if</span> more than one. <span style="color:#4e9a06">&#39;all&#39;</span> means
</span></span><span style="display:flex;"><span> all vertices, edges and schema, in other words, <span style="color:#4e9a06">&#39;all&#39;</span> equals with
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#39;vertex,edge,vertex_label,edge_label,property_key,index_label&#39;</span>
</span></span><span style="display:flex;"><span> Default: <span style="color:#ce5c00;font-weight:bold">[</span>PROPERTY_KEY, VERTEX_LABEL, EDGE_LABEL, INDEX_LABEL, VERTEX, EDGE<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> --log, -l
</span></span><span style="display:flex;"><span> Directory of log
</span></span><span style="display:flex;"><span> Default: ./logs
</span></span><span style="display:flex;"><span> --retry
</span></span><span style="display:flex;"><span> Retry times, default is <span style="color:#0000cf;font-weight:bold">3</span>
</span></span><span style="display:flex;"><span> Default: <span style="color:#0000cf;font-weight:bold">3</span>
</span></span><span style="display:flex;"><span> -D
</span></span><span style="display:flex;"><span> HDFS config parameters
</span></span><span style="display:flex;"><span> Syntax: -Dkey<span style="color:#ce5c00;font-weight:bold">=</span>value
</span></span><span style="display:flex;"><span> Default: <span style="color:#ce5c00;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> migrate Migrate graph
</span></span><span style="display:flex;"><span> Usage: migrate <span style="color:#ce5c00;font-weight:bold">[</span>options<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Options:
</span></span><span style="display:flex;"><span> --directory, -d
</span></span><span style="display:flex;"><span> Directory of graph schema/data, default is <span style="color:#4e9a06">&#39;./{graphname}&#39;</span> in
</span></span><span style="display:flex;"><span> <span style="color:#204a87">local</span> file system or <span style="color:#4e9a06">&#39;{fs.default.name}/{graphname}&#39;</span> in HDFS
</span></span><span style="display:flex;"><span> --graph-mode, -m
</span></span><span style="display:flex;"><span> Mode used when migrating to target graph, include: <span style="color:#ce5c00;font-weight:bold">[</span>RESTORING,
</span></span><span style="display:flex;"><span> MERGING<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Default: RESTORING
</span></span><span style="display:flex;"><span> Possible Values: <span style="color:#ce5c00;font-weight:bold">[</span>NONE, RESTORING, MERGING, LOADING<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> --huge-types, -t
</span></span><span style="display:flex;"><span> Type of schema/data. Concat with <span style="color:#4e9a06">&#39;,&#39;</span> <span style="color:#204a87;font-weight:bold">if</span> more than one. <span style="color:#4e9a06">&#39;all&#39;</span> means
</span></span><span style="display:flex;"><span> all vertices, edges and schema, in other words, <span style="color:#4e9a06">&#39;all&#39;</span> equals with
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#39;vertex,edge,vertex_label,edge_label,property_key,index_label&#39;</span>
</span></span><span style="display:flex;"><span> Default: <span style="color:#ce5c00;font-weight:bold">[</span>PROPERTY_KEY, VERTEX_LABEL, EDGE_LABEL, INDEX_LABEL, VERTEX, EDGE<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> --keep-local-data
</span></span><span style="display:flex;"><span> Whether to keep the <span style="color:#204a87">local</span> directory of graph data after restored
</span></span><span style="display:flex;"><span> Default: <span style="color:#204a87">false</span>
</span></span><span style="display:flex;"><span> --log, -l
</span></span><span style="display:flex;"><span> Directory of log
</span></span><span style="display:flex;"><span> Default: ./logs
</span></span><span style="display:flex;"><span> --retry
</span></span><span style="display:flex;"><span> Retry times, default is <span style="color:#0000cf;font-weight:bold">3</span>
</span></span><span style="display:flex;"><span> Default: <span style="color:#0000cf;font-weight:bold">3</span>
</span></span><span style="display:flex;"><span> --split-size, -s
</span></span><span style="display:flex;"><span> Split size of shard
</span></span><span style="display:flex;"><span> Default: <span style="color:#0000cf;font-weight:bold">1048576</span>
</span></span><span style="display:flex;"><span> --target-graph
</span></span><span style="display:flex;"><span> The name of target graph to migrate
</span></span><span style="display:flex;"><span> Default: hugegraph
</span></span><span style="display:flex;"><span> --target-password
</span></span><span style="display:flex;"><span> The password of target graph to migrate
</span></span><span style="display:flex;"><span> --target-timeout
</span></span><span style="display:flex;"><span> The timeout to connect target graph to migrate
</span></span><span style="display:flex;"><span> Default: <span style="color:#0000cf;font-weight:bold">0</span>
</span></span><span style="display:flex;"><span> --target-trust-store-file
</span></span><span style="display:flex;"><span> The trust store file of target graph to migrate
</span></span><span style="display:flex;"><span> --target-trust-store-password
</span></span><span style="display:flex;"><span> The trust store password of target graph to migrate
</span></span><span style="display:flex;"><span> --target-url
</span></span><span style="display:flex;"><span> The url of target graph to migrate
</span></span><span style="display:flex;"><span> Default: http://127.0.0.1:8081
</span></span><span style="display:flex;"><span> --target-user
</span></span><span style="display:flex;"><span> The username of target graph to migrate
</span></span><span style="display:flex;"><span> -D
</span></span><span style="display:flex;"><span> HDFS config parameters
</span></span><span style="display:flex;"><span> Syntax: -Dkey<span style="color:#ce5c00;font-weight:bold">=</span>value
</span></span><span style="display:flex;"><span> Default: <span style="color:#ce5c00;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> deploy Install HugeGraph-Server and HugeGraph-Studio
</span></span><span style="display:flex;"><span> Usage: deploy <span style="color:#ce5c00;font-weight:bold">[</span>options<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Options:
</span></span><span style="display:flex;"><span> * -p
</span></span><span style="display:flex;"><span> Install path of HugeGraph-Server and HugeGraph-Studio
</span></span><span style="display:flex;"><span> -u
</span></span><span style="display:flex;"><span> Download url prefix path of HugeGraph-Server and HugeGraph-Studio
</span></span><span style="display:flex;"><span> * -v
</span></span><span style="display:flex;"><span> Version of HugeGraph-Server and HugeGraph-Studio
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> start-all Start HugeGraph-Server and HugeGraph-Studio
</span></span><span style="display:flex;"><span> Usage: start-all <span style="color:#ce5c00;font-weight:bold">[</span>options<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Options:
</span></span><span style="display:flex;"><span> * -p
</span></span><span style="display:flex;"><span> Install path of HugeGraph-Server and HugeGraph-Studio
</span></span><span style="display:flex;"><span> * -v
</span></span><span style="display:flex;"><span> Version of HugeGraph-Server and HugeGraph-Studio
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> clear Clear HugeGraph-Server and HugeGraph-Studio
</span></span><span style="display:flex;"><span> Usage: clear <span style="color:#ce5c00;font-weight:bold">[</span>options<span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> Options:
</span></span><span style="display:flex;"><span> * -p
</span></span><span style="display:flex;"><span> Install path of HugeGraph-Server and HugeGraph-Studio
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> stop-all Stop HugeGraph-Server and HugeGraph-Studio
</span></span><span style="display:flex;"><span> Usage: stop-all
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87">help</span> Print usage
</span></span><span style="display:flex;"><span> Usage: <span style="color:#204a87">help</span>
</span></span></code></pre></div><h5 id="39-具体命令示例">3.9 具体命令示例</h5>
<h6 id="1-gremlin语句">1. gremlin语句</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># 同步执行gremlin</span>
</span></span><span style="display:flex;"><span>./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph gremlin-execute --script <span style="color:#4e9a06">&#39;g.V().count()&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># 异步执行gremlin</span>
</span></span><span style="display:flex;"><span>./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph gremlin-schedule --script <span style="color:#4e9a06">&#39;g.V().count()&#39;</span>
</span></span></code></pre></div><h6 id="2-查看task情况">2. 查看task情况</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph task-list
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph task-list --limit <span style="color:#0000cf;font-weight:bold">5</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph task-list --status success
</span></span></code></pre></div><h6 id="3-图模式查看和设置">3. 图模式查看和设置</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph graph-mode-set -m RESTORING MERGING NONE
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph graph-mode-set -m RESTORING
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph graph-mode-get
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph graph-list
</span></span></code></pre></div><h6 id="4-清理图">4. 清理图</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph graph-clear -c <span style="color:#4e9a06">&#34;I&#39;m sure to delete all data&#34;</span>
</span></span></code></pre></div><h6 id="5-图备份">5. 图备份</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph backup -t all --directory ./backup-test
</span></span></code></pre></div><h6 id="6-周期性的备份">6. 周期性的备份</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph --interval */2 * * * * schedule-backup -d ./backup-0.10.2
</span></span></code></pre></div><h6 id="7-图恢复">7. 图恢复</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># 设置图模式</span>
</span></span><span style="display:flex;"><span>./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph graph-mode-set -m RESTORING
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># 恢复图</span>
</span></span><span style="display:flex;"><span>./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph restore -t all --directory ./backup-test
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># 恢复图模式</span>
</span></span><span style="display:flex;"><span>./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph graph-mode-set -m NONE
</span></span></code></pre></div><h6 id="8-图迁移">8. 图迁移</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>./bin/hugegraph --url http://127.0.0.1:8080 --graph hugegraph migrate --target-url http://127.0.0.1:8090 --target-graph hugegraph
</span></span></code></pre></div>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-751ed124ec6dbb96d5e65c62dc9d4e85">3.4 - HugeGraph-Hubble Quick Start</h1>
<h3 id="1-hugegraph-hubble-overview">1 HugeGraph-Hubble Overview</h3>
<p>HugeGraph is an analysis-oriented graph database system that supports batch operations, which fully supports <a href="https://tinkerpop.apache.org">Apache TinkerPop3</a> framework and <a href="https://tinkerpop.apache.org/gremlin.html">Gremlin</a> graph query language. It provides a complete tool chain ecology such as export, backup, and recovery, and effectively solve the storage, query and correlation analysis needs of massive graph data. HugeGraph is widely used in the fields of risk control, insurance claims, recommendation search, public security crime crackdown, knowledge graph, network security, IT operation and maintenance of bank securities companies, and is committed to allowing more industries, organizations and users to enjoy a wider range of data comprehensive value.</p>
<p><strong>HugeGraph-Hubble</strong> is HugeGraph&rsquo;s one-stop visual analysis platform. The platform covers the whole process from data modeling, to efficient data import, to real-time and offline analysis of data, and unified management of graphs, realizing the whole process wizard of graph application. It is designed to improve the user&rsquo;s use fluency, lower the user&rsquo;s use threshold, and provide a more efficient and easy-to-use user experience.</p>
<p>The platform mainly includes the following modules:</p>
<h5 id="graph-management">Graph Management</h5>
<p>The graph management module realizes the unified management of multiple graphs and graph access, editing, deletion, and query by creating graph and connecting the platform and graph data.</p>
<h5 id="metadata-modeling">Metadata Modeling</h5>
<p>The metadata modeling module realizes the construction and management of graph models by creating attribute libraries, vertex types, edge types, and index types. The platform provides two modes, list mode and graph mode, which can display the metadata model in real time, which is more intuitive. At the same time, it also provides a metadata reuse function across graphs, which saves the tedious and repetitive creation process of the same metadata, greatly improves modeling efficiency and enhances ease of use.</p>
<h5 id="data-import">Data Import</h5>
<p>Data import is to convert the user&rsquo;s business data into the vertices and edges of the graph and insert it into the graph database. The platform provides a wizard-style visual import module. By creating import tasks, the management of import tasks and the parallel operation of multiple import tasks are realized. Improve import performance. After entering the import task, you only need to follow the platform step prompts, upload files as needed, and fill in the content to easily implement the import process of graph data. At the same time, it supports breakpoint resuming, error retry mechanism, etc., which reduces import costs and improves efficiency.</p>
<h5 id="graph-analysis">Graph Analysis</h5>
<p>By inputting the graph traversal language Gremlin, high-performance general analysis of graph data can be realized, and functions such as customized multi-dimensional path query of vertices can be provided, and three kinds of graph result display methods are provided, including: graph form, table form, Json form, and multi-dimensional display. The data form meets the needs of various scenarios used by users. It provides functions such as running records and collection of common statements, realizing the traceability of graph operations, and the reuse and sharing of query input, which is fast and efficient. It supports the export of graph data, and the export format is Json format.</p>
<h5 id="task-management">Task Management</h5>
<p>For Gremlin tasks that need to traverse the whole graph, index creation and reconstruction and other time-consuming asynchronous tasks, the platform provides corresponding task management functions to achieve unified management and result viewing of asynchronous tasks.</p>
<h3 id="2platform-workflow">2 Platform Workflow</h3>
<p>The module usage process of the platform is as follows:</p>
<center>
<img src="/docs/images/images-hubble/2平台使用流程.png" alt="image">
</center>
<h3 id="3platform-instructions">3 Platform Instructions</h3>
<h4 id="31graph-management">3.1 Graph Management</h4>
<h5 id="311graph-creation">3.1.1 Graph creation</h5>
<p>Under the graph management module, click [Create graph], and realize the connection of multiple graphs by filling in the graph ID, graph name, host name, port number, username, and password information.</p>
<center>
<img src="/docs/images/images-hubble/311图创建.png" alt="image">
</center>
<p>Create graph by filling in the content as follows::</p>
<center>
<img src="/docs/images/images-hubble/311图创建2.png" alt="image">
</center>
<h5 id="312graph-access">3.1.2 Graph Access</h5>
<p>Realize the information access of the graph space. After entering, you can perform operations such as multi-dimensional query analysis, metadata management, data import, and algorithm analysis of the graph.</p>
<center>
<img src="/docs/images/images-hubble/312图访问.png" alt="image">
</center>
<h5 id="313graph-management">3.1.3 Graph management</h5>
<ol>
<li>Users can achieve unified management of graphs through overview, search, and information editing and deletion of single graphs.</li>
<li>Search range: You can search for the graph name and ID.</li>
</ol>
<center>
<img src="/docs/images/images-hubble/313图管理.png" alt="image">
</center>
<h4 id="32metadata-modeling-list--graph-mode">3.2 Metadata Modeling (list + graph mode)</h4>
<h5 id="321module-entry">3.2.1 Module entry</h5>
<p>Left navigation:</p>
<center>
<img src="/docs/images/images-hubble/321元数据入口.png" alt="image">
</center>
<h5 id="322property-type">3.2.2 Property type</h5>
<h6 id="3221create-type">3.2.2.1 Create type</h6>
<ol>
<li>Fill in or select the attribute name, data type, and cardinality to complete the creation of the attribute.</li>
<li>Created attributes can be used as attributes of vertex type and edge type.</li>
</ol>
<p>List mode:</p>
<center>
<img src="/docs/images/images-hubble/3221属性创建.png" alt="image">
</center>
<p>Graph mode:</p>
<center>
<img src="/docs/images/images-hubble/3221属性创建2.png" alt="image">
</center>
<h6 id="3222reuse">3.2.2.2 Reuse</h6>
<ol>
<li>The platform provides the [Reuse] function, which can directly reuse the metadata of other graphs.</li>
<li>Select the graph ID that needs to be reused, and continue to select the attributes that need to be reused. After that, the platform will check whether there is a conflict. After passing, the metadata can be reused.</li>
</ol>
<p>Select reuse items:</p>
<center>
<img src="/docs/images/images-hubble/3222属性复用.png" alt="image">
</center>
<p>Check reuse items:</p>
<center>
<img src="/docs/images/images-hubble/3222属性复用2.png" alt="image">
</center>
<h6 id="3223management">3.2.2.3 Management</h6>
<ol>
<li>You can delete a single item or delete it in batches in the attribute list.</li>
</ol>
<h5 id="323vertex-type">3.2.3 Vertex type</h5>
<h6 id="3231create-type">3.2.3.1 Create type</h6>
<ol>
<li>Fill in or select the vertex type name, ID strategy, association attribute, primary key attribute, vertex style, content displayed below the vertex in the query result, and index information: including whether to create a type index, and the specific content of the attribute index, complete the vertex Type creation.</li>
</ol>
<p>List mode:</p>
<center>
<img src="/docs/images/images-hubble/3231顶点创建.png" alt="image">
</center>
<p>Graph mode:</p>
<center>
<img src="/docs/images/images-hubble/3231顶点创建2.png" alt="image">
</center>
<h6 id="3232-reuse">3.2.3.2 Reuse</h6>
<ol>
<li>The multiplexing of vertex types will reuse the attributes and attribute indexes associated with this type together.</li>
<li>The reuse method is similar to the property reuse, see 3.2.2.2.</li>
</ol>
<h6 id="3233-administration">3.2.3.3 Administration</h6>
<ol>
<li>
<p>Editing operations are available. The vertex style, association type, vertex display content, and attribute index can be edited, and the rest cannot be edited.</p>
</li>
<li>
<p>You can delete a single item or delete it in batches.</p>
</li>
</ol>
<center>
<img src="/docs/images/images-hubble/3233顶点删除.png" alt="image">
</center>
<h5 id="324-edge-types">3.2.4 Edge Types</h5>
<h6 id="3241-create">3.2.4.1 Create</h6>
<ol>
<li>Fill in or select the edge type name, start point type, end point type, associated attributes, whether to allow multiple connections, edge style, content displayed below the edge in the query result, and index information: including whether to create a type index, and attribute index The specific content, complete the creation of the edge type.</li>
</ol>
<p>List mode:</p>
<center>
<img src="/docs/images/images-hubble/3241边创建.png" alt="image">
</center>
<p>Graph mode:</p>
<center>
<img src="/docs/images/images-hubble/3241边创建2.png" alt="image">
</center>
<h6 id="3242-reuse">3.2.4.2 Reuse</h6>
<ol>
<li>The reuse of the edge type will reuse the start point type, end point type, associated attribute and attribute index of this type.</li>
<li>The reuse method is similar to the property reuse, see 3.2.2.2.</li>
</ol>
<h6 id="3243-administration">3.2.4.3 Administration</h6>
<ol>
<li>Editing operations are available. Edge styles, associated attributes, edge display content, and attribute indexes can be edited, and the rest cannot be edited, the same as the vertex type.</li>
<li>You can delete a single item or delete it in batches.</li>
</ol>
<h5 id="325-index-types">3.2.5 Index Types</h5>
<p>Displays vertex and edge indices for vertex types and edge types.</p>
<h4 id="33-data-import">3.3 Data Import</h4>
<p>The usage process of data import is as follows:</p>
<center>
<img src="/docs/images/images-hubble/33导入流程.png" alt="image">
</center>
<h5 id="331module-entrance">3.3.1 Module entrance</h5>
<p>Left navigation:</p>
<center>
<img src="/docs/images/images-hubble/331导入入口.png" alt="image">
</center>
<h5 id="332-create-task">3.3.2 Create task</h5>
<ol>
<li>Fill in the task name and remarks (optional) to create an import task.</li>
<li>Multiple import tasks can be created and imported in parallel.</li>
</ol>
<center>
<img src="/docs/images/images-hubble/332创建任务.png" alt="image">
</center>
<h5 id="333-uploading-files">3.3.3 Uploading files</h5>
<ol>
<li>Upload the file that needs to be composed. The currently supported format is CSV, which will be updated continuously in the future.</li>
<li>Multiple files can be uploaded at the same time.</li>
</ol>
<center>
<img src="/docs/images/images-hubble/333上传文件.png" alt="image">
</center>
<h5 id="334-setting-up-data-mapping">3.3.4 Setting up data mapping</h5>
<ol>
<li>
<p>Set up data mapping for uploaded files, including file settings and type settings</p>
</li>
<li>
<p>File settings: Check or fill in whether to include the header, separator, encoding format and other settings of the file itself, all set the default values, no need to fill in manually</p>
</li>
<li>
<p>Type setting:</p>
<ol>
<li>
<p>Vertex map and edge map:</p>
<p>【Vertex Type】: Select the vertex type, and upload the column data in the file for its ID mapping;</p>
<p>【Edge Type】: Select the edge type and map the column data of the uploaded file to the ID column of its start point type and end point type;</p>
</li>
<li>
<p>Mapping settings: upload the column data in the file for the attribute mapping of the selected vertex type. Here, if the attribute name is the same as the header name of the file, the mapping attribute can be automatically matched, and there is no need to manually fill in the selection.</p>
</li>
<li>
<p>After completing the setting, the setting list will be displayed before proceeding to the next step. It supports the operations of adding, editing and deleting mappings.</p>
</li>
</ol>
</li>
</ol>
<p>Fill in the settings map:</p>
<center>
<img src="/docs/images/images-hubble/334设置映射.png" alt="image">
</center>
<p>Mapping list:</p>
<center>
<img src="/docs/images/images-hubble/334设置映射2.png" alt="image">
</center>
<h5 id="335-import-data">3.3.5 Import data</h5>
<p>Before importing, you need to fill in the import setting parameters. After filling in, you can start importing data into the gallery.</p>
<ol>
<li>Import settings</li>
</ol>
<ul>
<li>The import setting parameter items are as shown in the figure below, all set the default value, no need to fill in manually</li>
</ul>
<center>
<img src="/docs/images/images-hubble/335导入设置.png" alt="image">
</center>
<ol start="2">
<li>Import details</li>
</ol>
<ul>
<li>Click Start Import to start the file import task</li>
<li>The import details provide the mapping type, import speed, import progress, time-consuming and the specific status of the current task set for each uploaded file, and can pause, resume, stop and other operations for each task</li>
<li>If the import fails, you can view the specific reason</li>
</ul>
<center>
<img src="/docs/images/images-hubble/335导入详情.png" alt="image">
</center>
<h4 id="34-data-analysis">3.4 Data Analysis</h4>
<h5 id="341-module-entry">3.4.1 Module entry</h5>
<p>Left navigation:</p>
<center>
<img src="/docs/images/images-hubble/341分析入口.png" alt="image">
</center>
<h5 id="342-multi-image-switching">3.4.2 Multi-image switching</h5>
<p>By switching the entrance on the left, flexibly switch the operation space of multiple graphs</p>
<center>
<img src="/docs/images/images-hubble/342多图切换.png" alt="image">
</center>
<h5 id="343-graph-analysis-and-processing">3.4.3 Graph Analysis and Processing</h5>
<p>HugeGraph supports Gremlin, a graph traversal query language of Apache TinkerPop3. Gremlin is a general graph database query language. By entering Gremlin statements and clicking execute, you can perform query and analysis operations on graph data, and create and delete vertices/edges. , vertex/edge attribute modification, etc.</p>
<p>After Gremlin query, below is the graph result display area, which provides 3 kinds of graph result display modes: [Graph Mode], [Table Mode], [Json Mode].</p>
<p>Support zoom, center, full screen, export and other operations.</p>
<p>【Picture Mode】</p>
<center>
<img src="/docs/images/images-hubble/343图分析-图.png" alt="image">
</center>
<p>【Table mode】</p>
<center>
<img src="/docs/images/images-hubble/343图分析-表格.png" alt="image">
</center>
<p>【Json mode】</p>
<center>
<img src="/docs/images/images-hubble/343图分析-json.png" alt="image">
</center>
<h5 id="344-data-details">3.4.4 Data Details</h5>
<p>Click the vertex/edge entity to view the data details of the vertex/edge, including: vertex/edge type, vertex ID, attribute and corresponding value, expand the information display dimension of the graph, and improve the usability.</p>
<h5 id="345-multidimensional-path-query-of-graph-results">3.4.5 Multidimensional Path Query of Graph Results</h5>
<p>In addition to the global query, in-depth customized query and hidden operations can be performed for the vertices in the query result to realize customized mining of graph results.</p>
<p>Right-click a vertex, and the menu entry of the vertex appears, which can be displayed, inquired, hidden, etc.</p>
<ul>
<li>Expand: Click to display the vertices associated with the selected point.</li>
<li>Query: By selecting the edge type and edge direction associated with the selected point, and then selecting its attributes and corresponding filtering rules under this condition, a customized path display can be realized.</li>
<li>Hide: When clicked, hides the selected point and its associated edges.</li>
</ul>
<p>Double-clicking a vertex also displays the vertex associated with the selected point.</p>
<center>
<img src="/docs/images/images-hubble/345定制路径查询.png" alt="image">
</center>
<h5 id="346-add-vertexedge">3.4.6 Add vertex/edge</h5>
<h6 id="3461-added-vertex">3.4.6.1 Added vertex</h6>
<p>In the graph area, two entries can be used to dynamically add vertices, as follows:</p>
<ol>
<li>Click on the graph area panel, the Add Vertex entry appears</li>
<li>Click the first icon in the action bar in the upper right corner</li>
</ol>
<p>Complete the addition of vertices by selecting or filling in the vertex type, ID value, and attribute information.</p>
<p>The entry is as follows:</p>
<center>
<img src="/docs/images/images-hubble/346新增顶点.png" alt="image">
</center>
<p>Add the vertex content as follows:</p>
<center>
<img src="/docs/images/images-hubble/346新增顶点2.png" alt="image">
</center>
<h6 id="3462-add-edge">3.4.6.2 Add edge</h6>
<p>Right-click a vertex in the graph result to add the outgoing or incoming edge of that point.</p>
<h5 id="347-execute-the-query-of-records-and-favorites">3.4.7 Execute the query of records and favorites</h5>
<ol>
<li>Record each query record at the bottom of the graph area, including: query time, execution type, content, status, time-consuming, as well as [collection] and [load] operations, to achieve a comprehensive record of graph execution, with traces to follow, and Can quickly load and reuse execution content</li>
<li>Provides the function of collecting sentences, which can be used to collect frequently used sentences, which is convenient for fast calling of high-frequency sentences.</li>
</ol>
<center>
<img src="/docs/images/images-hubble/347收藏.png" alt="image">
</center>
<h4 id="35-task-management">3.5 Task Management</h4>
<h5 id="351-module-entry">3.5.1 Module entry</h5>
<p>Left navigation:</p>
<center>
<img src="/docs/images/images-hubble/351任务管理入口.png" alt="image">
</center>
<h5 id="352-task-management">3.5.2 Task Management</h5>
<ol>
<li>Provide unified management and result viewing of asynchronous tasks. There are 4 types of asynchronous tasks, namely:</li>
</ol>
<ul>
<li>gremlin: Gremlin tasks</li>
<li>algorithm: OLAP algorithm task</li>
<li>remove_schema: remove metadata</li>
<li>rebuild_index: rebuild the index</li>
</ul>
<ol start="2">
<li>The list displays the asynchronous task information of the current graph, including: task ID, task name, task type, creation time, time-consuming, status, operation, and realizes the management of asynchronous tasks.</li>
<li>Support filtering by task type and status</li>
<li>Support searching for task ID and task name</li>
<li>Asynchronous tasks can be deleted or deleted in batches</li>
</ol>
<center>
<img src="/docs/images/images-hubble/352任务列表.png" alt="image">
</center>
<h5 id="353-gremlin-asynchronous-tasks">3.5.3 Gremlin asynchronous tasks</h5>
<ol>
<li>Create a task</li>
</ol>
<ul>
<li>The data analysis module currently supports two Gremlin operations, Gremlin query and Gremlin task; if the user switches to the Gremlin task, after clicking execute, an asynchronous task will be created in the asynchronous task center;</li>
</ul>
<ol start="2">
<li>Task submission</li>
</ol>
<ul>
<li>After the task is submitted successfully, the graph area returns the submission result and task ID</li>
</ul>
<ol start="3">
<li>Mission details</li>
</ol>
<ul>
<li>Provide [View] entry, you can jump to the task details to view the specific execution of the current task After jumping to the task center, the currently executing task line will be displayed directly</li>
</ul>
<center>
<img src="/docs/images/images-hubble/353gremlin任务.png" alt="image">
</center>
<p>Click to view the entry to jump to the task management list, as follows:</p>
<center>
<img src="/docs/images/images-hubble/353gremlin任务2.png" alt="image">
</center>
<ol start="4">
<li>View the results</li>
</ol>
<ul>
<li>The results are displayed in the form of json</li>
</ul>
<h5 id="354-olap-algorithm-tasks">3.5.4 OLAP algorithm tasks</h5>
<p>There is no visual OLAP algorithm execution on Hubble. You can call the RESTful API to perform OLAP algorithm tasks, find the corresponding tasks by ID in the task management, and view the progress and results.</p>
<h5 id="355-delete-metadata-rebuild-index">3.5.5 Delete metadata, rebuild index</h5>
<ol>
<li>Create a task</li>
</ol>
<ul>
<li>In the metadata modeling module, when deleting metadata, an asynchronous task for deleting metadata can be created</li>
</ul>
<center>
<img src="/docs/images/images-hubble/355删除元数据.png" alt="image">
</center>
<ul>
<li>When editing an existing vertex/edge type operation, when adding an index, an asynchronous task of creating an index can be created</li>
</ul>
<center>
<img src="/docs/images/images-hubble/355构建索引.png" alt="image">
</center>
<ol start="2">
<li>Task details</li>
</ol>
<ul>
<li>After confirming/saving, you can jump to the task center to view the details of the current task</li>
</ul>
<center>
<img src="/docs/images/images-hubble/355任务详情.png" alt="image">
</center>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-9cbf1b01e876dc8cdc2da1c17759eed3">3.5 - HugeGraph-Client Quick Start</h1>
<h3 id="1-overview-of-hugegraph">1 Overview Of Hugegraph</h3>
<p>HugeGraph-Client sends HTTP request to HugeGraph-Server to obtain and parse the execution result of Server. Currently only the HugeGraph-Client for Java is provided. You can use HugeGraph-Client to write Java code to operate HugeGraph, such as adding, deleting, modifying, and querying schema and graph data, or executing gremlin statements.</p>
<h3 id="2-what-you-need">2 What You Need</h3>
<ul>
<li>JDK1.8</li>
<li>Maven-3.3.9</li>
</ul>
<h3 id="3-how-to-use">3 How To Use</h3>
<p>The basic steps to use HugeGraph-Client are as follows:</p>
<ul>
<li>Build a new Maven project by IDEA or Eclipse</li>
<li>Add HugeGraph-Client dependency in pom file;</li>
<li>Create a object to invoke the interface of HugeGraph-Client</li>
</ul>
<p>See the complete example in the following section for the detail.</p>
<h3 id="4-complete-example">4 Complete Example</h3>
<h4 id="41-build-new-maven-project">4.1 Build New Maven Project</h4>
<p>Using IDEA or Eclipse to create the project:</p>
<ul>
<li><a href="http://www.vogella.com/tutorials/EclipseMaven/article.html">Build by Eclipse</a></li>
<li><a href="https://vaadin.com/docs/-/part/framework/getting-started/getting-started-idea.html">Build by Intellij Idea</a></li>
</ul>
<h4 id="42-add-hugegraph-client-dependency-in-pom">4.2 Add Hugegraph-Client Dependency In POM</h4>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&lt;dependencies&gt;</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&lt;dependency&gt;</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&lt;groupId&gt;</span>com.baidu.hugegraph<span style="color:#204a87;font-weight:bold">&lt;/groupId&gt;</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&lt;artifactId&gt;</span>hugegraph-client<span style="color:#204a87;font-weight:bold">&lt;/artifactId&gt;</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&lt;version&gt;</span>${version}<span style="color:#204a87;font-weight:bold">&lt;/version&gt;</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&lt;/dependency&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&lt;/dependencies&gt;</span>
</span></span></code></pre></div><h4 id="43-example">4.3 Example</h4>
<h5 id="431-singleexample">4.3.1 SingleExample</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">java.io.IOException</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">java.util.Iterator</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">java.util.List</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">com.baidu.hugegraph.driver.GraphManager</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">com.baidu.hugegraph.driver.GremlinManager</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">com.baidu.hugegraph.driver.HugeClient</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">com.baidu.hugegraph.driver.SchemaManager</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">com.baidu.hugegraph.structure.constant.T</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">com.baidu.hugegraph.structure.graph.Edge</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">com.baidu.hugegraph.structure.graph.Path</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">com.baidu.hugegraph.structure.graph.Vertex</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">com.baidu.hugegraph.structure.gremlin.Result</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">com.baidu.hugegraph.structure.gremlin.ResultSet</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">class</span> <span style="color:#000">SingleExample</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">static</span> <span style="color:#204a87;font-weight:bold">void</span> <span style="color:#000">main</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">String</span><span style="color:#ce5c00;font-weight:bold">[]</span> <span style="color:#000">args</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#204a87;font-weight:bold">throws</span> <span style="color:#000">IOException</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#8f5902;font-style:italic">// If connect failed will throw a exception.
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#000">HugeClient</span> <span style="color:#000">hugeClient</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">HugeClient</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">builder</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;http://localhost:8080&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;hugegraph&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">build</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">SchemaManager</span> <span style="color:#000">schema</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">hugeClient</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">schema</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asInt</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asDouble</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asDate</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asInt</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByCity&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">onV</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">secondary</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByAgeAndCity&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">onV</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">secondary</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;softwareByPrice&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">onV</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">range</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">sourceLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">targetLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">sourceLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">targetLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;createdByDate&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">onE</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">secondary</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;createdByWeight&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">onE</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">range</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knowsByWeight&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">onE</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">range</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">GraphManager</span> <span style="color:#000">graph</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">hugeClient</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">graph</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">marko</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;marko&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">29</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">vadas</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;vadas&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">27</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Hongkong&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">lop</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;lop&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">328</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">josh</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;josh&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">32</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">ripple</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;ripple&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">199</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">peter</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;peter&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">35</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Shanghai&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">vadas</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;2016-01-10&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">0</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">5</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;2013-02-20&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">1</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">0</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;2017-12-10&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">0</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">4</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;2009-11-11&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">0</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">4</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">ripple</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;2017-12-10&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">1</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">0</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">peter</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;2017-03-24&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">0</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">2</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">GremlinManager</span> <span style="color:#000">gremlin</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">hugeClient</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">gremlin</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;==== Path ====&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">ResultSet</span> <span style="color:#000">resultSet</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">gremlin</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">gremlin</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;g.V().outE().path()&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">execute</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Iterator</span><span style="color:#ce5c00;font-weight:bold">&lt;</span><span style="color:#000">Result</span><span style="color:#ce5c00;font-weight:bold">&gt;</span> <span style="color:#000">results</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">resultSet</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">iterator</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">results</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">forEachRemaining</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">result</span> <span style="color:#ce5c00;font-weight:bold">-&gt;</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">result</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getObject</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">getClass</span><span style="color:#ce5c00;font-weight:bold">());</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Object</span> <span style="color:#000">object</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">result</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getObject</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">if</span> <span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">object</span> <span style="color:#204a87;font-weight:bold">instanceof</span> <span style="color:#000">Vertex</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(((</span><span style="color:#000">Vertex</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#000">object</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">id</span><span style="color:#ce5c00;font-weight:bold">());</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span> <span style="color:#204a87;font-weight:bold">else</span> <span style="color:#204a87;font-weight:bold">if</span> <span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">object</span> <span style="color:#204a87;font-weight:bold">instanceof</span> <span style="color:#000">Edge</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(((</span><span style="color:#000">Edge</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#000">object</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">id</span><span style="color:#ce5c00;font-weight:bold">());</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span> <span style="color:#204a87;font-weight:bold">else</span> <span style="color:#204a87;font-weight:bold">if</span> <span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">object</span> <span style="color:#204a87;font-weight:bold">instanceof</span> <span style="color:#000">Path</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">List</span><span style="color:#ce5c00;font-weight:bold">&lt;</span><span style="color:#000">Object</span><span style="color:#ce5c00;font-weight:bold">&gt;</span> <span style="color:#000">elements</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#ce5c00;font-weight:bold">((</span><span style="color:#000">Path</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#000">object</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">objects</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">elements</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">forEach</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">element</span> <span style="color:#ce5c00;font-weight:bold">-&gt;</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">element</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getClass</span><span style="color:#ce5c00;font-weight:bold">());</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">element</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">});</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span> <span style="color:#204a87;font-weight:bold">else</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">object</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">});</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">hugeClient</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">close</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="432-batchexample">4.3.2 BatchExample</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">java.util.ArrayList</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">java.util.List</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">com.baidu.hugegraph.driver.GraphManager</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">com.baidu.hugegraph.driver.HugeClient</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">com.baidu.hugegraph.driver.SchemaManager</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">com.baidu.hugegraph.structure.graph.Edge</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">com.baidu.hugegraph.structure.graph.Vertex</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">class</span> <span style="color:#000">BatchExample</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">static</span> <span style="color:#204a87;font-weight:bold">void</span> <span style="color:#000">main</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">String</span><span style="color:#ce5c00;font-weight:bold">[]</span> <span style="color:#000">args</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#8f5902;font-style:italic">// If connect failed will throw a exception.
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#000">HugeClient</span> <span style="color:#000">hugeClient</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">HugeClient</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">builder</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;http://localhost:8080&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;hugegraph&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">build</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">SchemaManager</span> <span style="color:#000">schema</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">hugeClient</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">schema</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asInt</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asDate</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asInt</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">nullableKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">append</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;softwareByPrice&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">onV</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">range</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">link</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">link</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;createdByDate&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">onE</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">secondary</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#8f5902;font-style:italic">// get schema object by name
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getPropertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">));</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getVertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">));</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getEdgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">));</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getIndexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;createdByDate&#34;</span><span style="color:#ce5c00;font-weight:bold">));</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#8f5902;font-style:italic">// list all schema objects
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getPropertyKeys</span><span style="color:#ce5c00;font-weight:bold">());</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getVertexLabels</span><span style="color:#ce5c00;font-weight:bold">());</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getEdgeLabels</span><span style="color:#ce5c00;font-weight:bold">());</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getIndexLabels</span><span style="color:#ce5c00;font-weight:bold">());</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">GraphManager</span> <span style="color:#000">graph</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">hugeClient</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">graph</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">marko</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">Vertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;marko&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">29</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">vadas</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">Vertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;vadas&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">27</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">lop</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">Vertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;lop&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">328</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">josh</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">Vertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;josh&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">32</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">ripple</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">Vertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;ripple&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">199</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">peter</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">Vertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;peter&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">35</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Edge</span> <span style="color:#000">markoKnowsVadas</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">Edge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">source</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">target</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">vadas</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;2016-01-10&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Edge</span> <span style="color:#000">markoKnowsJosh</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">Edge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">source</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">target</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;2013-02-20&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Edge</span> <span style="color:#000">markoCreateLop</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">Edge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">source</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">target</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2017-12-10&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Edge</span> <span style="color:#000">joshCreateRipple</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">Edge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">source</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">target</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">ripple</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2017-12-10&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Edge</span> <span style="color:#000">joshCreateLop</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">Edge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">source</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">target</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;2009-11-11&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Edge</span> <span style="color:#000">peterCreateLop</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">Edge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">source</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">peter</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">target</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">property</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2017-03-24&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">List</span><span style="color:#ce5c00;font-weight:bold">&lt;</span><span style="color:#000">Vertex</span><span style="color:#ce5c00;font-weight:bold">&gt;</span> <span style="color:#000">vertices</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">ArrayList</span><span style="color:#ce5c00;font-weight:bold">&lt;&gt;();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">vertices</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">add</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">vertices</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">add</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">vadas</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">vertices</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">add</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">vertices</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">add</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">vertices</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">add</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">ripple</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">vertices</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">add</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">peter</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">List</span><span style="color:#ce5c00;font-weight:bold">&lt;</span><span style="color:#000">Edge</span><span style="color:#ce5c00;font-weight:bold">&gt;</span> <span style="color:#000">edges</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">ArrayList</span><span style="color:#ce5c00;font-weight:bold">&lt;&gt;();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">edges</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">add</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">markoKnowsVadas</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">edges</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">add</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">markoKnowsJosh</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">edges</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">add</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">markoCreateLop</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">edges</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">add</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">joshCreateRipple</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">edges</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">add</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">joshCreateLop</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">edges</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">add</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">peterCreateLop</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">vertices</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertices</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">vertices</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">vertices</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">forEach</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">vertex</span> <span style="color:#ce5c00;font-weight:bold">-&gt;</span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">vertex</span><span style="color:#ce5c00;font-weight:bold">));</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">edges</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdges</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">edges</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">edges</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">forEach</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">edge</span> <span style="color:#ce5c00;font-weight:bold">-&gt;</span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">edge</span><span style="color:#ce5c00;font-weight:bold">));</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">hugeClient</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">close</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span>
</span></span></code></pre></div><h3 id="44-run-the-example">4.4 Run The Example</h3>
<p>Before running Example, you need to start the Server. For the startup process, see<a href="/docs/quickstart/hugegraph-server">HugeGraph-Server Quick Start</a>.</p>
<h3 id="45-more-information-about-example">4.5 More Information About Example</h3>
<p>See<a href="/docs/clients/hugegraph-client">Introduce basic API of HugeGraph-Client</a>.</p>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-5074334c73aa450364a31470231ebff8">4 - Config</h1>
</div>
<div class="td-content" style="">
<h1 id="pg-af7e8f1dc385b255c4f38b3cbafe224a">4.1 - HugeGraph 配置</h1>
<h3 id="1-概述">1 概述</h3>
<p>配置文件的目录为 hugegraph-release/conf,所有关于服务和图本身的配置都在此目录下。</p>
<p>主要的配置文件包括:gremlin-server.yaml、rest-server.properties 和 hugegraph.properties</p>
<p>HugeGraphServer 内部集成了 GremlinServer 和 RestServer,而 gremlin-server.yaml 和 rest-server.properties 就是用来配置这两个Server的。</p>
<ul>
<li><a href="http://tinkerpop.apache.org/docs/3.2.3/reference/#gremlin-server">GremlinServer</a>:GremlinServer接受用户的gremlin语句,解析后转而调用Core的代码。</li>
<li>RestServer:提供RESTful API,根据不同的HTTP请求,调用对应的Core API,如果用户请求体是gremlin语句,则会转发给GremlinServer,实现对图数据的操作。</li>
</ul>
<p>下面对这三个配置文件逐一介绍。</p>
<h3 id="2-gremlin-serveryaml">2 gremlin-server.yaml</h3>
<p>gremlin-server.yaml 文件默认的内容如下:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># host and port of gremlin server, need to be consistent with host and port in rest-server.properties</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#8f5902;font-style:italic">#host: 127.0.0.1</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#8f5902;font-style:italic">#port: 8182</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#8f5902;font-style:italic"># timeout in ms of gremlin query</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">scriptEvaluationTimeout</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">30000</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">channelizer</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">org.apache.tinkerpop.gremlin.server.channel.WsAndHttpChannelizer</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">graphs</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">hugegraph</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">conf/hugegraph.properties</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">scriptEngines</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">gremlin-groovy</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">plugins</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">com.baidu.hugegraph.plugin.HugeGraphGremlinPlugin</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{}<span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">org.apache.tinkerpop.gremlin.server.jsr223.GremlinServerGremlinPlugin</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{}<span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">org.apache.tinkerpop.gremlin.jsr223.ImportGremlinPlugin</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">classImports</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">java.lang.Math,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">com.baidu.hugegraph.backend.id.IdGenerator,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">com.baidu.hugegraph.type.define.Directions,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">com.baidu.hugegraph.type.define.NodeRole,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">com.baidu.hugegraph.traversal.algorithm.CustomizePathsTraverser,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">com.baidu.hugegraph.traversal.algorithm.CustomizedCrosspointsTraverser,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">com.baidu.hugegraph.traversal.algorithm.FusiformSimilarityTraverser,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">com.baidu.hugegraph.traversal.algorithm.HugeTraverser,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">com.baidu.hugegraph.traversal.algorithm.NeighborRankTraverser,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">com.baidu.hugegraph.traversal.algorithm.PathsTraverser,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">com.baidu.hugegraph.traversal.algorithm.PersonalRankTraverser,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">com.baidu.hugegraph.traversal.algorithm.ShortestPathTraverser,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">com.baidu.hugegraph.traversal.algorithm.SubGraphTraverser,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">com.baidu.hugegraph.traversal.optimize.Text,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">com.baidu.hugegraph.traversal.optimize.TraversalUtil,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">com.baidu.hugegraph.util.DateUtil</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">],</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">methodImports</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">java.lang.Math#*]</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">files</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">scripts/empty-sample.groovy]</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">serializers</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- {<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">className</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">config</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">serializeResultToString</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ioRegistries</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">com.baidu.hugegraph.io.HugeGraphIoRegistry]</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- {<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">className</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">config</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">serializeResultToString</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ioRegistries</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">com.baidu.hugegraph.io.HugeGraphIoRegistry]</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- {<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">className</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">config</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">serializeResultToString</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ioRegistries</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">com.baidu.hugegraph.io.HugeGraphIoRegistry]</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- {<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">className</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">config</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">serializeResultToString</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ioRegistries</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">com.baidu.hugegraph.io.HugeGraphIoRegistry]</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">metrics</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">consoleReporter</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#204a87;font-weight:bold">enabled: false, interval</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">180000</span>}<span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">csvReporter</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#204a87;font-weight:bold">enabled: false, interval: 180000, fileName</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">./metrics/gremlin-server-metrics.csv},</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">jmxReporter</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#204a87;font-weight:bold">enabled</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">false</span>}<span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">slf4jReporter</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#204a87;font-weight:bold">enabled: false, interval</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">180000</span>}<span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">gangliaReporter</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#204a87;font-weight:bold">enabled: false, interval: 180000, addressingMode</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">MULTICAST},</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">graphiteReporter</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#204a87;font-weight:bold">enabled: false, interval</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">180000</span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">maxInitialLineLength</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">4096</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">maxHeaderSize</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">8192</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">maxChunkSize</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">8192</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">maxContentLength</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">65536</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">maxAccumulationBufferComponents</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1024</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">resultIterationBatchSize</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">64</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">writeBufferLowWaterMark</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">32768</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">writeBufferHighWaterMark</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">65536</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">ssl</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">enabled</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">false</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span></code></pre></div><p>上面的配置项很多,但目前只需要关注如下几个配置项:channelizer 和 graphs。</p>
<ul>
<li>graphs:GremlinServer 启动时需要打开的图,该项是一个 map 结构,key 是图的名字,value 是该图的配置文件路径;</li>
<li>channelizer:GremlinServer 与客户端有两种通信方式,分别是 WebSocket 和 HTTP(默认)。如果选择 WebSocket,
用户可以通过 <a href="/clients/gremlin-console.html">Gremlin-Console</a> 快速体验 HugeGraph 的特性,但是不支持大规模数据导入,
推荐使用 HTTP 的通信方式,HugeGraph 的外围组件都是基于 HTTP 实现的;</li>
</ul>
<p>默认GremlinServer是服务在 localhost:8182,如果需要修改,配置 host、port 即可</p>
<ul>
<li>host:部署 GremlinServer 机器的机器名或 IP,目前 HugeGraphServer 不支持分布式部署,且GremlinServer不直接暴露给用户;</li>
<li>port:部署 GremlinServer 机器的端口;</li>
</ul>
<p>同时需要在 rest-server.properties 中增加对应的配置项 gremlinserver.url=http://host:port</p>
<h3 id="3-rest-serverproperties">3 rest-server.properties</h3>
<p>rest-server.properties 文件的默认内容如下:</p>
<pre tabindex="0"><code class="language-properties" data-lang="properties"># bind url
restserver.url=http://127.0.0.1:8080
# gremlin server url, need to be consistent with host and port in gremlin-server.yaml
#gremlinserver.url=http://127.0.0.1:8182
# graphs list with pair NAME:CONF_PATH
graphs=[hugegraph:conf/hugegraph.properties]
# authentication
#auth.authenticator=
#auth.admin_token=
#auth.user_tokens=[]
server.id=server-1
server.role=master
</code></pre><ul>
<li>restserver.url:RestServer 提供服务的 url,根据实际环境修改;</li>
<li>graphs:RestServer 启动时也需要打开图,该项为 map 结构,key 是图的名字,value 是该图的配置文件路径;</li>
</ul>
<blockquote>
<p>注意:gremlin-server.yaml 和 rest-server.properties 都包含 graphs 配置项,而 <code>init-store</code> 命令是根据 gremlin-server.yaml 的 graphs 下的图进行初始化的。</p>
</blockquote>
<blockquote>
<p>配置项 gremlinserver.url 是 GremlinServer 为 RestServer 提供服务的 url,该配置项默认为 http://localhost:8182,如需修改,需要和 gremlin-server.yaml 中的 host 和 port 相匹配;</p>
</blockquote>
<h3 id="4-hugegraphproperties">4 hugegraph.properties</h3>
<p>hugegraph.properties 是一类文件,因为如果系统存在多个图,则会有多个相似的文件。该文件用来配置与图存储和查询相关的参数,文件的默认内容如下:</p>
<pre tabindex="0"><code class="language-properties" data-lang="properties"># gremlin entrence to create graph
gremlin.graph=com.baidu.hugegraph.HugeFactory
# cache config
#schema.cache_capacity=100000
# vertex-cache default is 1000w, 10min expired
#vertex.cache_capacity=10000000
#vertex.cache_expire=600
# edge-cache default is 100w, 10min expired
#edge.cache_capacity=1000000
#edge.cache_expire=600
# schema illegal name template
#schema.illegal_name_regex=\s+|~.*
#vertex.default_label=vertex
backend=rocksdb
serializer=binary
store=hugegraph
raft.mode=false
raft.safe_read=false
raft.use_snapshot=false
raft.endpoint=127.0.0.1:8281
raft.group_peers=127.0.0.1:8281,127.0.0.1:8282,127.0.0.1:8283
raft.path=./raft-log
raft.use_replicator_pipeline=true
raft.election_timeout=10000
raft.snapshot_interval=3600
raft.backend_threads=48
raft.read_index_threads=8
raft.queue_size=16384
raft.queue_publish_timeout=60
raft.apply_batch=1
raft.rpc_threads=80
raft.rpc_connect_timeout=5000
raft.rpc_timeout=60000
search.text_analyzer=jieba
search.text_analyzer_mode=INDEX
# rocksdb backend config
#rocksdb.data_path=/path/to/disk
#rocksdb.wal_path=/path/to/disk
# cassandra backend config
cassandra.host=localhost
cassandra.port=9042
cassandra.username=
cassandra.password=
#cassandra.connect_timeout=5
#cassandra.read_timeout=20
#cassandra.keyspace.strategy=SimpleStrategy
#cassandra.keyspace.replication=3
# hbase backend config
#hbase.hosts=localhost
#hbase.port=2181
#hbase.znode_parent=/hbase
#hbase.threads_max=64
# mysql backend config
#jdbc.driver=com.mysql.jdbc.Driver
#jdbc.url=jdbc:mysql://127.0.0.1:3306
#jdbc.username=root
#jdbc.password=
#jdbc.reconnect_max_times=3
#jdbc.reconnect_interval=3
#jdbc.sslmode=false
# postgresql &amp; cockroachdb backend config
#jdbc.driver=org.postgresql.Driver
#jdbc.url=jdbc:postgresql://localhost:5432/
#jdbc.username=postgres
#jdbc.password=
# palo backend config
#palo.host=127.0.0.1
#palo.poll_interval=10
#palo.temp_dir=./palo-data
#palo.file_limit_size=32
</code></pre><p>重点关注未注释的几项:</p>
<ul>
<li>gremlin.graph:GremlinServer 的启动入口,用户不要修改此项;</li>
<li>backend:使用的后端存储,可选值有 memory、cassandra、scylladb 和 rocksdb;</li>
<li>serializer:主要为内部使用,用于将 schema、vertex 和 edge 序列化到后端,对应的可选值为 text、cassandra、scylladb 和 binary;(注:rocksdb后端值需是binary,其他后端backend与serializer值需保持一致,如hbase后端该值为hbase)</li>
<li>store:图存储到后端使用的数据库名,在 cassandra 和 scylladb 中就是 keyspace 名,此项的值与 GremlinServer 和 RestServer 中的图名并无关系,但是出于直观考虑,建议仍然使用相同的名字;</li>
<li>cassandra.host:backend 为 cassandra 或 scylladb 时此项才有意义,cassandra/scylladb 集群的 seeds;</li>
<li>cassandra.port:backend 为 cassandra 或 scylladb 时此项才有意义,cassandra/scylladb 集群的 native port;</li>
<li>rocksdb.data_path:backend 为 rocksdb 时此项才有意义,rocksdb 的数据目录</li>
<li>rocksdb.wal_path:backend 为 rocksdb 时此项才有意义,rocksdb 的日志目录</li>
<li>admin.token: 通过一个token来获取服务器的配置信息,例如:<a href="http://localhost:8080/graphs/hugegraph/conf?token=162f7848-0b6d-4faf-b557-3a0797869c55">http://localhost:8080/graphs/hugegraph/conf?token=162f7848-0b6d-4faf-b557-3a0797869c55</a></li>
</ul>
<h3 id="5-多图配置">5 多图配置</h3>
<p>我们的系统是可以存在多个图的,并且各个图的后端可以不一样,比如图 hugegraph 和 hugegraph1,其中 hugegraph 以 cassandra 作为后端,hugegraph1 以 rocksdb作为后端。</p>
<p>配置方法也很简单:</p>
<p><strong>修改 gremlin-server.yaml</strong></p>
<p>在 gremlin-server.yaml 的 graphs 域中添加一个键值对,键为图的名字,值为图的配置文件路径,比如:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">graphs</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">hugegraph</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">conf/hugegraph.properties,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">hugegraph1</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">conf/hugegraph1.properties</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span></code></pre></div><p><strong>修改 rest-server.properties</strong></p>
<p>在 rest-server.properties 的 graphs 域中添加一个键值对,键为图的名字,值为图的配置文件路径,比如:</p>
<pre tabindex="0"><code class="language-properties" data-lang="properties">graphs=[hugegraph:conf/hugegraph.properties, hugegraph1:conf/hugegraph1.properties]
</code></pre><p><strong>添加 hugegraph1.properties</strong></p>
<p>拷贝 hugegraph.properties,命名为 hugegraph1.properties,修改图对应的数据库名以及关于后端部分的参数,比如:</p>
<pre tabindex="0"><code class="language-properties" data-lang="properties">store=hugegraph1
...
backend=rocksdb
serializer=binary
</code></pre><p><strong>停止 Server,初始化执行 init-store.sh(为新的图创建数据库),重新启动 Server</strong></p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>$ bin/stop-hugegraph.sh
</span></span><span style="display:flex;"><span>$ bin/init-store.sh
</span></span><span style="display:flex;"><span>$ bin/start-hugegraph.sh
</span></span></code></pre></div>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-6bfbb2db4e1f281942d741cef305e724">4.2 - HugeGraph 配置项</h1>
<h3 id="gremlin-server-配置项">Gremlin Server 配置项</h3>
<p>对应配置文件<code>gremlin-server.yaml</code></p>
<table>
<thead>
<tr>
<th>config option</th>
<th>default value</th>
<th>descrition</th>
</tr>
</thead>
<tbody>
<tr>
<td>host</td>
<td>127.0.0.1</td>
<td>The host or ip of Gremlin Server.</td>
</tr>
<tr>
<td>port</td>
<td>8182</td>
<td>The listening port of Gremlin Server.</td>
</tr>
<tr>
<td>graphs</td>
<td>hugegraph: conf/hugegraph.properties</td>
<td>The map of graphs with name and config file path.</td>
</tr>
<tr>
<td>scriptEvaluationTimeout</td>
<td>30000</td>
<td>The timeout for gremlin script execution(millisecond).</td>
</tr>
<tr>
<td>channelizer</td>
<td>org.apache.tinkerpop.gremlin.server.channel.HttpChannelizer</td>
<td>Indicates the protocol which the Gremlin Server provides service.</td>
</tr>
<tr>
<td>authentication</td>
<td>authenticator: com.baidu.hugegraph.auth.StandardAuthenticator, config: {tokens: conf/rest-server.properties}</td>
<td>The authenticator and config(contains tokens path) of authentication mechanism.</td>
</tr>
</tbody>
</table>
<h3 id="rest-server--api-配置项">Rest Server &amp; API 配置项</h3>
<p>对应配置文件<code>rest-server.properties</code></p>
<table>
<thead>
<tr>
<th>config option</th>
<th>default value</th>
<th>descrition</th>
</tr>
</thead>
<tbody>
<tr>
<td>graphs</td>
<td>[hugegraph:conf/hugegraph.properties]</td>
<td>The map of graphs&rsquo; name and config file.</td>
</tr>
<tr>
<td>server.id</td>
<td>server-1</td>
<td>The id of rest server, used for license verification.</td>
</tr>
<tr>
<td>server.role</td>
<td>master</td>
<td>The role of nodes in the cluster, available types are [master, worker, computer]</td>
</tr>
<tr>
<td>restserver.url</td>
<td>http://127.0.0.1:8080</td>
<td>The url for listening of rest server.</td>
</tr>
<tr>
<td>ssl.keystore_file</td>
<td>server.keystore</td>
<td>The path of server keystore file used when https protocol is enabled.</td>
</tr>
<tr>
<td>ssl.keystore_password</td>
<td></td>
<td>The password of the path of the server keystore file used when the https protocol is enabled.</td>
</tr>
<tr>
<td>restserver.max_worker_threads</td>
<td>2 * CPUs</td>
<td>The maximum worker threads of rest server.</td>
</tr>
<tr>
<td>restserver.min_free_memory</td>
<td>64</td>
<td>The minimum free memory(MB) of rest server, requests will be rejected when the available memory of system is lower than this value.</td>
</tr>
<tr>
<td>restserver.request_timeout</td>
<td>30</td>
<td>The time in seconds within which a request must complete, -1 means no timeout.</td>
</tr>
<tr>
<td>restserver.connection_idle_timeout</td>
<td>30</td>
<td>The time in seconds to keep an inactive connection alive, -1 means no timeout.</td>
</tr>
<tr>
<td>restserver.connection_max_requests</td>
<td>256</td>
<td>The max number of HTTP requests allowed to be processed on one keep-alive connection, -1 means unlimited.</td>
</tr>
<tr>
<td>gremlinserver.url</td>
<td>http://127.0.0.1:8182</td>
<td>The url of gremlin server.</td>
</tr>
<tr>
<td>gremlinserver.max_route</td>
<td>8</td>
<td>The max route number for gremlin server.</td>
</tr>
<tr>
<td>gremlinserver.timeout</td>
<td>30</td>
<td>The timeout in seconds of waiting for gremlin server.</td>
</tr>
<tr>
<td>batch.max_edges_per_batch</td>
<td>500</td>
<td>The maximum number of edges submitted per batch.</td>
</tr>
<tr>
<td>batch.max_vertices_per_batch</td>
<td>500</td>
<td>The maximum number of vertices submitted per batch.</td>
</tr>
<tr>
<td>batch.max_write_ratio</td>
<td>50</td>
<td>The maximum thread ratio for batch writing, only take effect if the batch.max_write_threads is 0.</td>
</tr>
<tr>
<td>batch.max_write_threads</td>
<td>0</td>
<td>The maximum threads for batch writing, if the value is 0, the actual value will be set to batch.max_write_ratio * restserver.max_worker_threads.</td>
</tr>
<tr>
<td>auth.authenticator</td>
<td></td>
<td>The class path of authenticator implemention. e.g., com.baidu.hugegraph.auth.StandardAuthenticator, or com.baidu.hugegraph.auth.ConfigAuthenticator.</td>
</tr>
<tr>
<td>auth.admin_token</td>
<td>162f7848-0b6d-4faf-b557-3a0797869c55</td>
<td>Token for administrator operations, only for com.baidu.hugegraph.auth.ConfigAuthenticator.</td>
</tr>
<tr>
<td>auth.graph_store</td>
<td>hugegraph</td>
<td>The name of graph used to store authentication information, like users, only for com.baidu.hugegraph.auth.StandardAuthenticator.</td>
</tr>
<tr>
<td>auth.user_tokens</td>
<td>[hugegraph:9fd95c9c-711b-415b-b85f-d4df46ba5c31]</td>
<td>The map of user tokens with name and password, only for com.baidu.hugegraph.auth.ConfigAuthenticator.</td>
</tr>
<tr>
<td>auth.audit_log_rate</td>
<td>1000.0</td>
<td>The max rate of audit log output per user, default value is 1000 records per second.</td>
</tr>
<tr>
<td>auth.cache_capacity</td>
<td>10240</td>
<td>The max cache capacity of each auth cache item.</td>
</tr>
<tr>
<td>auth.cache_expire</td>
<td>600</td>
<td>The expiration time in seconds of vertex cache.</td>
</tr>
<tr>
<td>auth.remote_url</td>
<td></td>
<td>If the address is empty, it provide auth service, otherwise it is auth client and also provide auth service through rpc forwarding. The remote url can be set to multiple addresses, which are concat by &lsquo;,&rsquo;.</td>
</tr>
<tr>
<td>auth.token_expire</td>
<td>86400</td>
<td>The expiration time in seconds after token created</td>
</tr>
<tr>
<td>auth.token_secret</td>
<td>FXQXbJtbCLxODc6tGci732pkH1cyf8Qg</td>
<td>Secret key of HS256 algorithm.</td>
</tr>
<tr>
<td>exception.allow_trace</td>
<td>false</td>
<td>Whether to allow exception trace stack.</td>
</tr>
</tbody>
</table>
<h3 id="基本配置项">基本配置项</h3>
<p>基本配置项及后端配置项对应配置文件:{graph-name}.properties,如<code>hugegraph.properties</code></p>
<table>
<thead>
<tr>
<th>config option</th>
<th>default value</th>
<th>descrition</th>
</tr>
</thead>
<tbody>
<tr>
<td>gremlin.graph</td>
<td>com.baidu.hugegraph.HugeFactory</td>
<td>Gremlin entrance to create graph.</td>
</tr>
<tr>
<td>backend</td>
<td>rocksdb</td>
<td>The data store type, available values are [memory, rocksdb, cassandra, scylladb, hbase, mysql].</td>
</tr>
<tr>
<td>serializer</td>
<td>binary</td>
<td>The serializer for backend store, available values are [text, binary, cassandra, hbase, mysql].</td>
</tr>
<tr>
<td>store</td>
<td>hugegraph</td>
<td>The database name like Cassandra Keyspace.</td>
</tr>
<tr>
<td>store.connection_detect_interval</td>
<td>600</td>
<td>The interval in seconds for detecting connections, if the idle time of a connection exceeds this value, detect it and reconnect if needed before using, value 0 means detecting every time.</td>
</tr>
<tr>
<td>store.graph</td>
<td>g</td>
<td>The graph table name, which store vertex, edge and property.</td>
</tr>
<tr>
<td>store.schema</td>
<td>m</td>
<td>The schema table name, which store meta data.</td>
</tr>
<tr>
<td>store.system</td>
<td>s</td>
<td>The system table name, which store system data.</td>
</tr>
<tr>
<td>schema.illegal_name_regex</td>
<td>.<em>\s+$|~.</em></td>
<td>The regex specified the illegal format for schema name.</td>
</tr>
<tr>
<td>schema.cache_capacity</td>
<td>10000</td>
<td>The max cache size(items) of schema cache.</td>
</tr>
<tr>
<td>vertex.cache_type</td>
<td>l2</td>
<td>The type of vertex cache, allowed values are [l1, l2].</td>
</tr>
<tr>
<td>vertex.cache_capacity</td>
<td>10000000</td>
<td>The max cache size(items) of vertex cache.</td>
</tr>
<tr>
<td>vertex.cache_expire</td>
<td>600</td>
<td>The expire time in seconds of vertex cache.</td>
</tr>
<tr>
<td>vertex.check_customized_id_exist</td>
<td>false</td>
<td>Whether to check the vertices exist for those using customized id strategy.</td>
</tr>
<tr>
<td>vertex.default_label</td>
<td>vertex</td>
<td>The default vertex label.</td>
</tr>
<tr>
<td>vertex.tx_capacity</td>
<td>10000</td>
<td>The max size(items) of vertices(uncommitted) in transaction.</td>
</tr>
<tr>
<td>vertex.check_adjacent_vertex_exist</td>
<td>false</td>
<td>Whether to check the adjacent vertices of edges exist.</td>
</tr>
<tr>
<td>vertex.lazy_load_adjacent_vertex</td>
<td>true</td>
<td>Whether to lazy load adjacent vertices of edges.</td>
</tr>
<tr>
<td>vertex.part_edge_commit_size</td>
<td>5000</td>
<td>Whether to enable the mode to commit part of edges of vertex, enabled if commit size &gt; 0, 0 means disabled.</td>
</tr>
<tr>
<td>vertex.encode_primary_key_number</td>
<td>true</td>
<td>Whether to encode number value of primary key in vertex id.</td>
</tr>
<tr>
<td>vertex.remove_left_index_at_overwrite</td>
<td>false</td>
<td>Whether remove left index at overwrite.</td>
</tr>
<tr>
<td>edge.cache_type</td>
<td>l2</td>
<td>The type of edge cache, allowed values are [l1, l2].</td>
</tr>
<tr>
<td>edge.cache_capacity</td>
<td>1000000</td>
<td>The max cache size(items) of edge cache.</td>
</tr>
<tr>
<td>edge.cache_expire</td>
<td>600</td>
<td>The expiration time in seconds of edge cache.</td>
</tr>
<tr>
<td>edge.tx_capacity</td>
<td>10000</td>
<td>The max size(items) of edges(uncommitted) in transaction.</td>
</tr>
<tr>
<td>query.page_size</td>
<td>500</td>
<td>The size of each page when querying by paging.</td>
</tr>
<tr>
<td>query.batch_size</td>
<td>1000</td>
<td>The size of each batch when querying by batch.</td>
</tr>
<tr>
<td>query.ignore_invalid_data</td>
<td>true</td>
<td>Whether to ignore invalid data of vertex or edge.</td>
</tr>
<tr>
<td>query.index_intersect_threshold</td>
<td>1000</td>
<td>The maximum number of intermediate results to intersect indexes when querying by multiple single index properties.</td>
</tr>
<tr>
<td>query.ramtable_edges_capacity</td>
<td>20000000</td>
<td>The maximum number of edges in ramtable, include OUT and IN edges.</td>
</tr>
<tr>
<td>query.ramtable_enable</td>
<td>false</td>
<td>Whether to enable ramtable for query of adjacent edges.</td>
</tr>
<tr>
<td>query.ramtable_vertices_capacity</td>
<td>10000000</td>
<td>The maximum number of vertices in ramtable, generally the largest vertex id is used as capacity.</td>
</tr>
<tr>
<td>query.optimize_aggregate_by_index</td>
<td>false</td>
<td>Whether to optimize aggregate query(like count) by index.</td>
</tr>
<tr>
<td>oltp.concurrent_depth</td>
<td>10</td>
<td>The min depth to enable concurrent oltp algorithm.</td>
</tr>
<tr>
<td>oltp.concurrent_threads</td>
<td>10</td>
<td>Thread number to concurrently execute oltp algorithm.</td>
</tr>
<tr>
<td>oltp.collection_type</td>
<td>EC</td>
<td>The implementation type of collections used in oltp algorithm.</td>
</tr>
<tr>
<td>rate_limit.read</td>
<td>0</td>
<td>The max rate(times/s) to execute query of vertices/edges.</td>
</tr>
<tr>
<td>rate_limit.write</td>
<td>0</td>
<td>The max rate(items/s) to add/update/delete vertices/edges.</td>
</tr>
<tr>
<td>task.wait_timeout</td>
<td>10</td>
<td>Timeout in seconds for waiting for the task to complete,such as when truncating or clearing the backend.</td>
</tr>
<tr>
<td>task.input_size_limit</td>
<td>16777216</td>
<td>The job input size limit in bytes.</td>
</tr>
<tr>
<td>task.result_size_limit</td>
<td>16777216</td>
<td>The job result size limit in bytes.</td>
</tr>
<tr>
<td>task.sync_deletion</td>
<td>false</td>
<td>Whether to delete schema or expired data synchronously.</td>
</tr>
<tr>
<td>task.ttl_delete_batch</td>
<td>1</td>
<td>The batch size used to delete expired data.</td>
</tr>
<tr>
<td>computer.config</td>
<td>/conf/computer.yaml</td>
<td>The config file path of computer job.</td>
</tr>
<tr>
<td>search.text_analyzer</td>
<td>ikanalyzer</td>
<td>Choose a text analyzer for searching the vertex/edge properties, available type are [word, ansj, hanlp, smartcn, jieba, jcseg, mmseg4j, ikanalyzer].</td>
</tr>
<tr>
<td>search.text_analyzer_mode</td>
<td>smart</td>
<td>Specify the mode for the text analyzer, the available mode of analyzer are {word: [MaximumMatching, ReverseMaximumMatching, MinimumMatching, ReverseMinimumMatching, BidirectionalMaximumMatching, BidirectionalMinimumMatching, BidirectionalMaximumMinimumMatching, FullSegmentation, MinimalWordCount, MaxNgramScore, PureEnglish], ansj: [BaseAnalysis, IndexAnalysis, ToAnalysis, NlpAnalysis], hanlp: [standard, nlp, index, nShort, shortest, speed], smartcn: [], jieba: [SEARCH, INDEX], jcseg: [Simple, Complex], mmseg4j: [Simple, Complex, MaxWord], ikanalyzer: [smart, max_word]}.</td>
</tr>
<tr>
<td>snowflake.datecenter_id</td>
<td>0</td>
<td>The datacenter id of snowflake id generator.</td>
</tr>
<tr>
<td>snowflake.force_string</td>
<td>false</td>
<td>Whether to force the snowflake long id to be a string.</td>
</tr>
<tr>
<td>snowflake.worker_id</td>
<td>0</td>
<td>The worker id of snowflake id generator.</td>
</tr>
<tr>
<td>raft.mode</td>
<td>false</td>
<td>Whether the backend storage works in raft mode.</td>
</tr>
<tr>
<td>raft.safe_read</td>
<td>false</td>
<td>Whether to use linearly consistent read.</td>
</tr>
<tr>
<td>raft.use_snapshot</td>
<td>false</td>
<td>Whether to use snapshot.</td>
</tr>
<tr>
<td>raft.endpoint</td>
<td>127.0.0.1:8281</td>
<td>The peerid of current raft node.</td>
</tr>
<tr>
<td>raft.group_peers</td>
<td>127.0.0.1:8281,127.0.0.1:8282,127.0.0.1:8283</td>
<td>The peers of current raft group.</td>
</tr>
<tr>
<td>raft.path</td>
<td>./raft-log</td>
<td>The log path of current raft node.</td>
</tr>
<tr>
<td>raft.use_replicator_pipeline</td>
<td>true</td>
<td>Whether to use replicator line, when turned on it multiple logs can be sent in parallel, and the next log doesn&rsquo;t have to wait for the ack message of the current log to be sent.</td>
</tr>
<tr>
<td>raft.election_timeout</td>
<td>10000</td>
<td>Timeout in milliseconds to launch a round of election.</td>
</tr>
<tr>
<td>raft.snapshot_interval</td>
<td>3600</td>
<td>The interval in seconds to trigger snapshot save.</td>
</tr>
<tr>
<td>raft.backend_threads</td>
<td>current CPU vcores</td>
<td>The thread number used to apply task to bakcend.</td>
</tr>
<tr>
<td>raft.read_index_threads</td>
<td>8</td>
<td>The thread number used to execute reading index.</td>
</tr>
<tr>
<td>raft.apply_batch</td>
<td>1</td>
<td>The apply batch size to trigger disruptor event handler.</td>
</tr>
<tr>
<td>raft.queue_size</td>
<td>16384</td>
<td>The disruptor buffers size for jraft RaftNode, StateMachine and LogManager.</td>
</tr>
<tr>
<td>raft.queue_publish_timeout</td>
<td>60</td>
<td>The timeout in second when publish event into disruptor.</td>
</tr>
<tr>
<td>raft.rpc_threads</td>
<td>80</td>
<td>The rpc threads for jraft RPC layer.</td>
</tr>
<tr>
<td>raft.rpc_connect_timeout</td>
<td>5000</td>
<td>The rpc connect timeout for jraft rpc.</td>
</tr>
<tr>
<td>raft.rpc_timeout</td>
<td>60000</td>
<td>The rpc timeout for jraft rpc.</td>
</tr>
<tr>
<td>raft.rpc_buf_low_water_mark</td>
<td>10485760</td>
<td>The ChannelOutboundBuffer&rsquo;s low water mark of netty, when buffer size less than this size, the method ChannelOutboundBuffer.isWritable() will return true, it means that low downstream pressure or good network.</td>
</tr>
<tr>
<td>raft.rpc_buf_high_water_mark</td>
<td>20971520</td>
<td>The ChannelOutboundBuffer&rsquo;s high water mark of netty, only when buffer size exceed this size, the method ChannelOutboundBuffer.isWritable() will return false, it means that the downstream pressure is too great to process the request or network is very congestion, upstream needs to limit rate at this time.</td>
</tr>
<tr>
<td>raft.read_strategy</td>
<td>ReadOnlyLeaseBased</td>
<td>The linearizability of read strategy.</td>
</tr>
</tbody>
</table>
<h3 id="rpc-server-配置">RPC server 配置</h3>
<table>
<thead>
<tr>
<th>config option</th>
<th>default value</th>
<th>descrition</th>
</tr>
</thead>
<tbody>
<tr>
<td>rpc.client_connect_timeout</td>
<td>20</td>
<td>The timeout(in seconds) of rpc client connect to rpc server.</td>
</tr>
<tr>
<td>rpc.client_load_balancer</td>
<td>consistentHash</td>
<td>The rpc client uses a load-balancing algorithm to access multiple rpc servers in one cluster. Default value is &lsquo;consistentHash&rsquo;, means forwording by request parameters.</td>
</tr>
<tr>
<td>rpc.client_read_timeout</td>
<td>40</td>
<td>The timeout(in seconds) of rpc client read from rpc server.</td>
</tr>
<tr>
<td>rpc.client_reconnect_period</td>
<td>10</td>
<td>The period(in seconds) of rpc client reconnect to rpc server.</td>
</tr>
<tr>
<td>rpc.client_retries</td>
<td>3</td>
<td>Failed retry number of rpc client calls to rpc server.</td>
</tr>
<tr>
<td>rpc.config_order</td>
<td>999</td>
<td>Sofa rpc configuration file loading order, the larger the more later loading.</td>
</tr>
<tr>
<td>rpc.logger_impl</td>
<td>com.alipay.sofa.rpc.log.SLF4JLoggerImpl</td>
<td>Sofa rpc log implementation class.</td>
</tr>
<tr>
<td>rpc.protocol</td>
<td>bolt</td>
<td>Rpc communication protocol, client and server need to be specified the same value.</td>
</tr>
<tr>
<td>rpc.remote_url</td>
<td></td>
<td>The remote urls of rpc peers, it can be set to multiple addresses, which are concat by &lsquo;,&rsquo;, empty value means not enabled.</td>
</tr>
<tr>
<td>rpc.server_adaptive_port</td>
<td>false</td>
<td>Whether the bound port is adaptive, if it&rsquo;s enabled, when the port is in use, automatically +1 to detect the next available port. Note that this process is not atomic, so there may still be port conflicts.</td>
</tr>
<tr>
<td>rpc.server_host</td>
<td></td>
<td>The hosts/ips bound by rpc server to provide services, empty value means not enabled.</td>
</tr>
<tr>
<td>rpc.server_port</td>
<td>8090</td>
<td>The port bound by rpc server to provide services.</td>
</tr>
<tr>
<td>rpc.server_timeout</td>
<td>30</td>
<td>The timeout(in seconds) of rpc server execution.</td>
</tr>
</tbody>
</table>
<h3 id="cassandra-后端配置项">Cassandra 后端配置项</h3>
<table>
<thead>
<tr>
<th>config option</th>
<th>default value</th>
<th>descrition</th>
</tr>
</thead>
<tbody>
<tr>
<td>backend</td>
<td></td>
<td>Must be set to <code>cassandra</code>.</td>
</tr>
<tr>
<td>serializer</td>
<td></td>
<td>Must be set to <code>cassandra</code>.</td>
</tr>
<tr>
<td>cassandra.host</td>
<td>localhost</td>
<td>The seeds hostname or ip address of cassandra cluster.</td>
</tr>
<tr>
<td>cassandra.port</td>
<td>9042</td>
<td>The seeds port address of cassandra cluster.</td>
</tr>
<tr>
<td>cassandra.connect_timeout</td>
<td>5</td>
<td>The cassandra driver connect server timeout(seconds).</td>
</tr>
<tr>
<td>cassandra.read_timeout</td>
<td>20</td>
<td>The cassandra driver read from server timeout(seconds).</td>
</tr>
<tr>
<td>cassandra.keyspace.strategy</td>
<td>SimpleStrategy</td>
<td>The replication strategy of keyspace, valid value is SimpleStrategy or NetworkTopologyStrategy.</td>
</tr>
<tr>
<td>cassandra.keyspace.replication</td>
<td>[3]</td>
<td>The keyspace replication factor of SimpleStrategy, like &lsquo;[3]&rsquo;.Or replicas in each datacenter of NetworkTopologyStrategy, like &lsquo;[dc1:2,dc2:1]&rsquo;.</td>
</tr>
<tr>
<td>cassandra.username</td>
<td></td>
<td>The username to use to login to cassandra cluster.</td>
</tr>
<tr>
<td>cassandra.password</td>
<td></td>
<td>The password corresponding to cassandra.username.</td>
</tr>
<tr>
<td>cassandra.compression_type</td>
<td>none</td>
<td>The compression algorithm of cassandra transport: none/snappy/lz4.</td>
</tr>
<tr>
<td>cassandra.jmx_port=7199</td>
<td>7199</td>
<td>The port of JMX API service for cassandra.</td>
</tr>
<tr>
<td>cassandra.aggregation_timeout</td>
<td>43200</td>
<td>The timeout in seconds of waiting for aggregation.</td>
</tr>
</tbody>
</table>
<h3 id="scylladb-后端配置项">ScyllaDB 后端配置项</h3>
<table>
<thead>
<tr>
<th>config option</th>
<th>default value</th>
<th>descrition</th>
</tr>
</thead>
<tbody>
<tr>
<td>backend</td>
<td></td>
<td>Must be set to <code>scylladb</code>.</td>
</tr>
<tr>
<td>serializer</td>
<td></td>
<td>Must be set to <code>scylladb</code>.</td>
</tr>
</tbody>
</table>
<p>其它与 Cassandra 后端一致。</p>
<h3 id="rocksdb-后端配置项">RocksDB 后端配置项</h3>
<table>
<thead>
<tr>
<th>config option</th>
<th>default value</th>
<th>descrition</th>
</tr>
</thead>
<tbody>
<tr>
<td>backend</td>
<td></td>
<td>Must be set to <code>rocksdb</code>.</td>
</tr>
<tr>
<td>serializer</td>
<td></td>
<td>Must be set to <code>binary</code>.</td>
</tr>
<tr>
<td>rocksdb.data_disks</td>
<td>[]</td>
<td>The optimized disks for storing data of RocksDB. The format of each element: <code>STORE/TABLE: /path/disk</code>.Allowed keys are [g/vertex, g/edge_out, g/edge_in, g/vertex_label_index, g/edge_label_index, g/range_int_index, g/range_float_index, g/range_long_index, g/range_double_index, g/secondary_index, g/search_index, g/shard_index, g/unique_index, g/olap]</td>
</tr>
<tr>
<td>rocksdb.data_path</td>
<td>rocksdb-data</td>
<td>The path for storing data of RocksDB.</td>
</tr>
<tr>
<td>rocksdb.wal_path</td>
<td>rocksdb-data</td>
<td>The path for storing WAL of RocksDB.</td>
</tr>
<tr>
<td>rocksdb.allow_mmap_reads</td>
<td>false</td>
<td>Allow the OS to mmap file for reading sst tables.</td>
</tr>
<tr>
<td>rocksdb.allow_mmap_writes</td>
<td>false</td>
<td>Allow the OS to mmap file for writing.</td>
</tr>
<tr>
<td>rocksdb.block_cache_capacity</td>
<td>8388608</td>
<td>The amount of block cache in bytes that will be used by RocksDB, 0 means no block cache.</td>
</tr>
<tr>
<td>rocksdb.bloom_filter_bits_per_key</td>
<td>-1</td>
<td>The bits per key in bloom filter, a good value is 10, which yields a filter with ~ 1% false positive rate, -1 means no bloom filter.</td>
</tr>
<tr>
<td>rocksdb.bloom_filter_block_based_mode</td>
<td>false</td>
<td>Use block based filter rather than full filter.</td>
</tr>
<tr>
<td>rocksdb.bloom_filter_whole_key_filtering</td>
<td>true</td>
<td>True if place whole keys in the bloom filter, else place the prefix of keys.</td>
</tr>
<tr>
<td>rocksdb.bottommost_compression</td>
<td>NO_COMPRESSION</td>
<td>The compression algorithm for the bottommost level of RocksDB, allowed values are none/snappy/z/bzip2/lz4/lz4hc/xpress/zstd.</td>
</tr>
<tr>
<td>rocksdb.bulkload_mode</td>
<td>false</td>
<td>Switch to the mode to bulk load data into RocksDB.</td>
</tr>
<tr>
<td>rocksdb.cache_index_and_filter_blocks</td>
<td>false</td>
<td>Indicating if we&rsquo;d put index/filter blocks to the block cache.</td>
</tr>
<tr>
<td>rocksdb.compaction_style</td>
<td>LEVEL</td>
<td>Set compaction style for RocksDB: LEVEL/UNIVERSAL/FIFO.</td>
</tr>
<tr>
<td>rocksdb.compression</td>
<td>SNAPPY_COMPRESSION</td>
<td>The compression algorithm for compressing blocks of RocksDB, allowed values are none/snappy/z/bzip2/lz4/lz4hc/xpress/zstd.</td>
</tr>
<tr>
<td>rocksdb.compression_per_level</td>
<td>[NO_COMPRESSION, NO_COMPRESSION, SNAPPY_COMPRESSION, SNAPPY_COMPRESSION, SNAPPY_COMPRESSION, SNAPPY_COMPRESSION, SNAPPY_COMPRESSION]</td>
<td>The compression algorithms for different levels of RocksDB, allowed values are none/snappy/z/bzip2/lz4/lz4hc/xpress/zstd.</td>
</tr>
<tr>
<td>rocksdb.delayed_write_rate</td>
<td>16777216</td>
<td>The rate limit in bytes/s of user write requests when need to slow down if the compaction gets behind.</td>
</tr>
<tr>
<td>rocksdb.log_level</td>
<td>INFO</td>
<td>The info log level of RocksDB.</td>
</tr>
<tr>
<td>rocksdb.max_background_jobs</td>
<td>8</td>
<td>Maximum number of concurrent background jobs, including flushes and compactions.</td>
</tr>
<tr>
<td>rocksdb.level_compaction_dynamic_level_bytes</td>
<td>false</td>
<td>Whether to enable level_compaction_dynamic_level_bytes, if it&rsquo;s enabled we give max_bytes_for_level_multiplier a priority against max_bytes_for_level_base, the bytes of base level is dynamic for a more predictable LSM tree, it is useful to limit worse case space amplification. Turning this feature on/off for an existing DB can cause unexpected LSM tree structure so it&rsquo;s not recommended.</td>
</tr>
<tr>
<td>rocksdb.max_bytes_for_level_base</td>
<td>536870912</td>
<td>The upper-bound of the total size of level-1 files in bytes.</td>
</tr>
<tr>
<td>rocksdb.max_bytes_for_level_multiplier</td>
<td>10.0</td>
<td>The ratio between the total size of level (L+1) files and the total size of level L files for all L.</td>
</tr>
<tr>
<td>rocksdb.max_open_files</td>
<td>-1</td>
<td>The maximum number of open files that can be cached by RocksDB, -1 means no limit.</td>
</tr>
<tr>
<td>rocksdb.max_subcompactions</td>
<td>4</td>
<td>The value represents the maximum number of threads per compaction job.</td>
</tr>
<tr>
<td>rocksdb.max_write_buffer_number</td>
<td>6</td>
<td>The maximum number of write buffers that are built up in memory.</td>
</tr>
<tr>
<td>rocksdb.max_write_buffer_number_to_maintain</td>
<td>0</td>
<td>The total maximum number of write buffers to maintain in memory.</td>
</tr>
<tr>
<td>rocksdb.min_write_buffer_number_to_merge</td>
<td>2</td>
<td>The minimum number of write buffers that will be merged together.</td>
</tr>
<tr>
<td>rocksdb.num_levels</td>
<td>7</td>
<td>Set the number of levels for this database.</td>
</tr>
<tr>
<td>rocksdb.optimize_filters_for_hits</td>
<td>false</td>
<td>This flag allows us to not store filters for the last level.</td>
</tr>
<tr>
<td>rocksdb.optimize_mode</td>
<td>true</td>
<td>Optimize for heavy workloads and big datasets.</td>
</tr>
<tr>
<td>rocksdb.pin_l0_filter_and_index_blocks_in_cache</td>
<td>false</td>
<td>Indicating if we&rsquo;d put index/filter blocks to the block cache.</td>
</tr>
<tr>
<td>rocksdb.sst_path</td>
<td></td>
<td>The path for ingesting SST file into RocksDB.</td>
</tr>
<tr>
<td>rocksdb.target_file_size_base</td>
<td>67108864</td>
<td>The target file size for compaction in bytes.</td>
</tr>
<tr>
<td>rocksdb.target_file_size_multiplier</td>
<td>1</td>
<td>The size ratio between a level L file and a level (L+1) file.</td>
</tr>
<tr>
<td>rocksdb.use_direct_io_for_flush_and_compaction</td>
<td>false</td>
<td>Enable the OS to use direct read/writes in flush and compaction.</td>
</tr>
<tr>
<td>rocksdb.use_direct_reads</td>
<td>false</td>
<td>Enable the OS to use direct I/O for reading sst tables.</td>
</tr>
<tr>
<td>rocksdb.write_buffer_size</td>
<td>134217728</td>
<td>Amount of data in bytes to build up in memory.</td>
</tr>
<tr>
<td>rocksdb.max_manifest_file_size</td>
<td>104857600</td>
<td>The max size of manifest file in bytes.</td>
</tr>
<tr>
<td>rocksdb.skip_stats_update_on_db_open</td>
<td>false</td>
<td>Whether to skip statistics update when opening the database, setting this flag true allows us to not update statistics.</td>
</tr>
<tr>
<td>rocksdb.max_file_opening_threads</td>
<td>16</td>
<td>The max number of threads used to open files.</td>
</tr>
<tr>
<td>rocksdb.max_total_wal_size</td>
<td>0</td>
<td>Total size of WAL files in bytes. Once WALs exceed this size, we will start forcing the flush of column families related, 0 means no limit.</td>
</tr>
<tr>
<td>rocksdb.db_write_buffer_size</td>
<td>0</td>
<td>Total size of write buffers in bytes across all column families, 0 means no limit.</td>
</tr>
<tr>
<td>rocksdb.delete_obsolete_files_period</td>
<td>21600</td>
<td>The periodicity in seconds when obsolete files get deleted, 0 means always do full purge.</td>
</tr>
<tr>
<td>rocksdb.hard_pending_compaction_bytes_limit</td>
<td>274877906944</td>
<td>The hard limit to impose on pending compaction in bytes.</td>
</tr>
<tr>
<td>rocksdb.level0_file_num_compaction_trigger</td>
<td>2</td>
<td>Number of files to trigger level-0 compaction.</td>
</tr>
<tr>
<td>rocksdb.level0_slowdown_writes_trigger</td>
<td>20</td>
<td>Soft limit on number of level-0 files for slowing down writes.</td>
</tr>
<tr>
<td>rocksdb.level0_stop_writes_trigger</td>
<td>36</td>
<td>Hard limit on number of level-0 files for stopping writes.</td>
</tr>
<tr>
<td>rocksdb.soft_pending_compaction_bytes_limit</td>
<td>68719476736</td>
<td>The soft limit to impose on pending compaction in bytes.</td>
</tr>
</tbody>
</table>
<h3 id="hbase-后端配置项">HBase 后端配置项</h3>
<table>
<thead>
<tr>
<th>config option</th>
<th>default value</th>
<th>descrition</th>
</tr>
</thead>
<tbody>
<tr>
<td>backend</td>
<td></td>
<td>Must be set to <code>hbase</code>.</td>
</tr>
<tr>
<td>serializer</td>
<td></td>
<td>Must be set to <code>hbase</code>.</td>
</tr>
<tr>
<td>hbase.hosts</td>
<td>localhost</td>
<td>The hostnames or ip addresses of HBase zookeeper, separated with commas.</td>
</tr>
<tr>
<td>hbase.port</td>
<td>2181</td>
<td>The port address of HBase zookeeper.</td>
</tr>
<tr>
<td>hbase.threads_max</td>
<td>64</td>
<td>The max threads num of hbase connections.</td>
</tr>
<tr>
<td>hbase.znode_parent</td>
<td>/hbase</td>
<td>The znode parent path of HBase zookeeper.</td>
</tr>
<tr>
<td>hbase.zk_retry</td>
<td>3</td>
<td>The recovery retry times of HBase zookeeper.</td>
</tr>
<tr>
<td>hbase.aggregation_timeout</td>
<td>43200</td>
<td>The timeout in seconds of waiting for aggregation.</td>
</tr>
<tr>
<td>hbase.kerberos_enable</td>
<td>false</td>
<td>Is Kerberos authentication enabled for HBase.</td>
</tr>
<tr>
<td>hbase.kerberos_keytab</td>
<td></td>
<td>The HBase&rsquo;s key tab file for kerberos authentication.</td>
</tr>
<tr>
<td>hbase.kerberos_principal</td>
<td></td>
<td>The HBase&rsquo;s principal for kerberos authentication.</td>
</tr>
<tr>
<td>hbase.krb5_conf</td>
<td>etc/krb5.conf</td>
<td>Kerberos configuration file, including KDC IP, default realm, etc.</td>
</tr>
<tr>
<td>hbase.hbase_site</td>
<td>/etc/hbase/conf/hbase-site.xml</td>
<td>The HBase&rsquo;s configuration file</td>
</tr>
</tbody>
</table>
<h3 id="mysql--postgresql-后端配置项">MySQL &amp; PostgreSQL 后端配置项</h3>
<table>
<thead>
<tr>
<th>config option</th>
<th>default value</th>
<th>descrition</th>
</tr>
</thead>
<tbody>
<tr>
<td>backend</td>
<td></td>
<td>Must be set to <code>mysql</code>.</td>
</tr>
<tr>
<td>serializer</td>
<td></td>
<td>Must be set to <code>mysql</code>.</td>
</tr>
<tr>
<td>jdbc.driver</td>
<td>com.mysql.jdbc.Driver</td>
<td>The JDBC driver class to connect database.</td>
</tr>
<tr>
<td>jdbc.url</td>
<td>jdbc:mysql://127.0.0.1:3306</td>
<td>The url of database in JDBC format.</td>
</tr>
<tr>
<td>jdbc.username</td>
<td>root</td>
<td>The username to login database.</td>
</tr>
<tr>
<td>jdbc.password</td>
<td>******</td>
<td>The password corresponding to jdbc.username.</td>
</tr>
<tr>
<td>jdbc.ssl_mode</td>
<td>false</td>
<td>The SSL mode of connections with database.</td>
</tr>
<tr>
<td>jdbc.reconnect_interval</td>
<td>3</td>
<td>The interval(seconds) between reconnections when the database connection fails.</td>
</tr>
<tr>
<td>jdbc.reconnect_max_times</td>
<td>3</td>
<td>The reconnect times when the database connection fails.</td>
</tr>
<tr>
<td>jdbc.storage_engine</td>
<td>InnoDB</td>
<td>The storage engine of backend store database, like InnoDB/MyISAM/RocksDB for MySQL.</td>
</tr>
<tr>
<td>jdbc.postgresql.connect_database</td>
<td>template1</td>
<td>The database used to connect when init store, drop store or check store exist.</td>
</tr>
</tbody>
</table>
<h3 id="postgresql-后端配置项">PostgreSQL 后端配置项</h3>
<table>
<thead>
<tr>
<th>config option</th>
<th>default value</th>
<th>descrition</th>
</tr>
</thead>
<tbody>
<tr>
<td>backend</td>
<td></td>
<td>Must be set to <code>postgresql</code>.</td>
</tr>
<tr>
<td>serializer</td>
<td></td>
<td>Must be set to <code>postgresql</code>.</td>
</tr>
</tbody>
</table>
<p>其它与 MySQL 后端一致。</p>
<blockquote>
<p>PostgreSQL 后端的 driver 和 url 应该设置为:</p>
<ul>
<li><code>jdbc.driver=org.postgresql.Driver</code></li>
<li><code>jdbc.url=jdbc:postgresql://localhost:5432/</code></li>
</ul>
</blockquote>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-7d189549d4201521c83e0d93a2474a2d">4.3 - HugeGraph 内置用户权限与扩展权限配置及使用</h1>
<h3 id="概述">概述</h3>
<p>HugeGraph 为了方便不同用户场景下的鉴权使用,目前内置了两套权限模式:</p>
<ol>
<li>简单的<code>ConfigAuthenticator</code>模式,通过本地配置文件存储用户名和密码 (仅支持单 GraphServer)</li>
<li>完备的<code>StandardAuthenticator</code>模式,支持多用户认证、以及细粒度的权限访问控制,采用基于 “用户-用户组-操作-资源” 的 4 层设计,灵活控制用户角色与权限 (支持多 GraphServer)</li>
</ol>
<p>其中 <code>StandardAuthenticator</code> 模式的几个核心设计:</p>
<ul>
<li>初始化时创建超级管理员 (<code>admin</code>) 用户,后续通过超级管理员创建其它用户,新创建的用户被分配足够权限后,可以创建或管理更多的用户</li>
<li>支持动态创建用户、用户组、资源,支持动态分配或取消权限</li>
<li>用户可以属于一个或多个用户组,每个用户组可以拥有对任意个资源的操作权限,操作类型包括:读、写、删除、执行等种类</li>
<li>&ldquo;资源&rdquo; 描述了图数据库中的数据,比如符合某一类条件的顶点,每一个资源包括 <code>type</code><code>label</code><code>properties</code>三个要素,共有 18 种类型、任意 label、任意 properties 可组合形成的资源,一个资源的内部条件是且关系,多个资源之间的条件是或关系</li>
</ul>
<p>举例说明:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// 场景:某用户只有北京地区的数据读取权限
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">user</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">name</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">xx</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#ce5c00;font-weight:bold">-</span><span style="color:#000">belong</span><span style="color:#ce5c00;font-weight:bold">-&gt;</span> <span style="color:#000">group</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">name</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">xx</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#ce5c00;font-weight:bold">-</span><span style="color:#000">access</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">read</span><span style="color:#ce5c00;font-weight:bold">)-&gt;</span> <span style="color:#000">target</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">graph1</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">resource</span><span style="color:#ce5c00;font-weight:bold">={</span><span style="color:#000">label</span><span style="color:#ce5c00;font-weight:bold">:</span> <span style="color:#000">person</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">city</span><span style="color:#ce5c00;font-weight:bold">:</span> <span style="color:#000">Beijing</span><span style="color:#ce5c00;font-weight:bold">})</span>
</span></span></code></pre></div><h3 id="配置用户认证">配置用户认证</h3>
<p>HugeGraph 默认<strong>不启用</strong>用户认证功能,需通过修改配置文件来启用该功能。内置实现了<code>StandardAuthenticator</code><code>ConfigAuthenticator</code>两种模式,<code>StandardAuthenticator</code>模式支持多用户认证与细粒度权限控制,<code>ConfigAuthenticator</code>模式支持简单的用户权限认证。此外,开发者可以自定义实现<code>HugeAuthenticator</code>接口来对接自身的权限系统。</p>
<p>用户认证方式均采用 <a href="https://zh.wikipedia.org/wiki/HTTP%E5%9F%BA%E6%9C%AC%E8%AE%A4%E8%AF%81">HTTP Basic Authentication</a> ,简单说就是在发送 HTTP 请求时在 <code>Authentication</code> 设置选择 <code>Basic</code> 然后输入对应的用户名和密码,对应 HTTP 明文如下所示 :</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a40000">GET http://localhost:8080/graphs/hugegraph/schema/vertexlabels
</span></span></span><span style="display:flex;"><span><span style="color:#a40000">Authorization: Basic admin xxxx
</span></span></span></code></pre></div><h4 id="standardauthenticator模式">StandardAuthenticator模式</h4>
<p><code>StandardAuthenticator</code>模式是通过在数据库后端存储用户信息来支持用户认证和权限控制,该实现基于数据库存储的用户的名称与密码进行认证(密码已被加密),基于用户的角色来细粒度控制用户权限。下面是具体的配置流程(重启服务生效):</p>
<p>在配置文件<code>gremlin-server.yaml</code>中配置<code>authenticator</code>及其<code>rest-server</code>文件路径:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">authentication</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">authenticator</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">com.baidu.hugegraph.auth.StandardAuthenticator,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">authenticationHandler</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">com.baidu.hugegraph.auth.WsAndHttpBasicAuthHandler,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">config</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#204a87;font-weight:bold">tokens</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">conf/rest-server.properties}</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span></code></pre></div><p>在配置文件<code>rest-server.properties</code>中配置<code>authenticator</code>及其<code>graph_store</code>信息:</p>
<pre tabindex="0"><code class="language-properties" data-lang="properties">auth.authenticator=com.baidu.hugegraph.auth.StandardAuthenticator
auth.graph_store=hugegraph
# auth client config
# 如果是分开部署 GraphServer 和 AuthServer, 还需要指定下面的配置, 地址填写 AuthServer 的 IP:RPC 端口
#auth.remote_url=127.0.0.1:8899,127.0.0.1:8898,127.0.0.1:8897
</code></pre><p>其中,<code>graph_store</code>配置项是指使用哪一个图来存储用户信息,如果存在多个图的话,选取任意一个均可。</p>
<p>在配置文件<code>hugegraph{n}.properties</code>中配置<code>gremlin.graph</code>信息:</p>
<pre tabindex="0"><code class="language-properties" data-lang="properties">gremlin.graph=com.baidu.hugegraph.auth.HugeFactoryAuthProxy
</code></pre><p>然后详细的权限 API 调用和说明请参考 <a href="/docs/clients/restful-api/auth">Authentication-API</a> 文档</p>
<h4 id="configauthenticator模式">ConfigAuthenticator模式</h4>
<p><code>ConfigAuthenticator</code>模式是通过预先在配置文件中设置用户信息来支持用户认证,该实现是基于配置好的静态<code>tokens</code>来验证用户是否合法。下面是具体的配置流程(重启服务生效):</p>
<p>在配置文件<code>gremlin-server.yaml</code>中配置<code>authenticator</code>及其<code>rest-server</code>文件路径:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">authentication</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">authenticator</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">com.baidu.hugegraph.auth.ConfigAuthenticator,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">authenticationHandler</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">com.baidu.hugegraph.auth.WsAndHttpBasicAuthHandler,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">config</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#204a87;font-weight:bold">tokens</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">conf/rest-server.properties}</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span></code></pre></div><p>在配置文件<code>rest-server.properties</code>中配置<code>authenticator</code>及其<code>tokens</code>信息:</p>
<pre tabindex="0"><code class="language-properties" data-lang="properties">auth.authenticator=com.baidu.hugegraph.auth.ConfigAuthenticator
auth.admin_token=token-value-a
auth.user_tokens=[hugegraph1:token-value-1, hugegraph2:token-value-2]
</code></pre><p>在配置文件<code>hugegraph{n}.properties</code>中配置<code>gremlin.graph</code>信息:</p>
<pre tabindex="0"><code class="language-properties" data-lang="properties">gremlin.graph=com.baidu.hugegraph.auth.HugeFactoryAuthProxy
</code></pre><h3 id="自定义用户认证系统">自定义用户认证系统</h3>
<p>如果需要支持更加灵活的用户系统,可自定义authenticator进行扩展,自定义authenticator实现接口<code>com.baidu.hugegraph.auth.HugeAuthenticator</code>即可,然后修改配置文件中<code>authenticator</code>配置项指向该实现。</p>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-7e400260398a18d0be72b1fe5a73f419">4.4 - 配置 HugeGraphServer 使用 https 协议</h1>
<h3 id="概述">概述</h3>
<p>HugeGraphServer 默认使用的是 http 协议,如果用户对请求的安全性有要求,可以配置成 https。</p>
<h3 id="服务端配置">服务端配置</h3>
<p>修改 conf/rest-server.properties 配置文件,将 restserver.url 的 schema 部分改为 https。</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ini" data-lang="ini"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># 将协议设置为 https</span>
</span></span><span style="display:flex;"><span><span style="color:#c4a000">restserver.url</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">https://127.0.0.1:8080</span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># 服务端 keystore 文件路径,当协议为 https 时该默认值自动生效,可按需修改此项</span>
</span></span><span style="display:flex;"><span><span style="color:#c4a000">ssl.keystore_file</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">conf/hugegraph-server.keystore</span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># 服务端 keystore 文件密码,当协议为 https 时该默认值自动生效,可按需修改此项</span>
</span></span><span style="display:flex;"><span><span style="color:#c4a000">ssl.keystore_password</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">******</span>
</span></span></code></pre></div><p>服务端的 conf 目录下已经给出了一个 keystore 文件<code>hugegraph-server.keystore</code>,该文件的密码为<code>hugegraph</code>
这两项都是在开启了 https 协议时的默认值,用户可以生成自己的 keystore 文件及密码,然后修改<code>ssl.keystore_file</code><code>ssl.keystore_password</code>的值。</p>
<h3 id="客户端配置">客户端配置</h3>
<h4 id="在-hugegraph-client-中使用-https">在 HugeGraph-Client 中使用 https</h4>
<p>在构造 HugeClient 时传入 https 相关的配置,代码示例:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#000">String</span> <span style="color:#000">url</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#4e9a06">&#34;https://localhost:8080&#34;</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#000">String</span> <span style="color:#000">graphName</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#4e9a06">&#34;hugegraph&#34;</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#000">HugeClientBuilder</span> <span style="color:#000">builder</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">HugeClient</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">builder</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">url</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">graphName</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// 客户端 keystore 文件路径
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">String</span> <span style="color:#000">trustStoreFilePath</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#4e9a06">&#34;hugegraph.truststore&#34;</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// 客户端 keystore 密码
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">String</span> <span style="color:#000">trustStorePassword</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#4e9a06">&#34;******&#34;</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#000">builder</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">configSSL</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">trustStoreFilePath</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">trustStorePassword</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span><span style="color:#000">HugeClient</span> <span style="color:#000">hugeClient</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">builder</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">build</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span></code></pre></div><blockquote>
<p>注意:HugeGraph-Client 在 1.9.0 版本以前是直接以 new 的方式创建,并且不支持 https 协议,在 1.9.0 版本以后改成以 builder 的方式创建,并支持配置 https 协议。</p>
</blockquote>
<h4 id="在-hugegraph-loader-中使用-https">在 HugeGraph-Loader 中使用 https</h4>
<p>启动导入任务时,在命令行中添加如下选项:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># https</span>
</span></span><span style="display:flex;"><span>--protocol https
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># 客户端证书文件路径,当指定 --protocol 为 https 时,默认值 conf/hugegraph.truststore 自动生效,可按需修改</span>
</span></span><span style="display:flex;"><span>--trust-store-file <span style="color:#ce5c00;font-weight:bold">{</span>file<span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># 客户端证书文件密码,当指定 --protocol 为 https 时,默认值 hugegraph 自动生效,可按需修改</span>
</span></span><span style="display:flex;"><span>--trust-store-password <span style="color:#ce5c00;font-weight:bold">{</span>password<span style="color:#ce5c00;font-weight:bold">}</span>
</span></span></code></pre></div><p>hugegraph-loader 的 conf 目录下已经放了一个默认的客户端证书文件 hugegraph.truststore,其密码是 hugegraph。</p>
<h4 id="在-hugegraph-tools-中使用-https">在 HugeGraph-Tools 中使用 https</h4>
<p>执行命令时,在命令行中添加如下选项:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># 客户端证书文件路径,当 url 中使用 https 协议时,默认值 conf/hugegraph.truststore 自动生效,可按需修改</span>
</span></span><span style="display:flex;"><span>--trust-store-file <span style="color:#ce5c00;font-weight:bold">{</span>file<span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># 客户端证书文件密码,当 url 中使用 https 协议时,默认值 hugegraph 自动生效,可按需修改</span>
</span></span><span style="display:flex;"><span>--trust-store-password <span style="color:#ce5c00;font-weight:bold">{</span>password<span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># 执行迁移命令时,当 --target-url 中使用 https 协议时,默认值 conf/hugegraph.truststore 自动生效,可按需修改</span>
</span></span><span style="display:flex;"><span>--target-trust-store-file <span style="color:#ce5c00;font-weight:bold">{</span>target-file<span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># 执行迁移命令时,当 --target-url 中使用 https 协议时,默认值 hugegraph 自动生效,可按需修改</span>
</span></span><span style="display:flex;"><span>--target-trust-store-password <span style="color:#ce5c00;font-weight:bold">{</span>target-password<span style="color:#ce5c00;font-weight:bold">}</span>
</span></span></code></pre></div><p>hugegraph-tools 的 conf 目录下已经放了一个默认的客户端证书文件 hugegraph.truststore,其密码是 hugegraph。</p>
<h3 id="如何生成证书文件">如何生成证书文件</h3>
<p>本部分给出生成证书的示例,如果默认的证书已经够用,或者已经知晓如何生成,可跳过。</p>
<h4 id="服务端">服务端</h4>
<ol>
<li>⽣成服务端私钥,并且导⼊到服务端 keystore ⽂件中,server.keystore 是给服务端⽤的,其中保存着⾃⼰的私钥</li>
</ol>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>keytool -genkey -alias serverkey -keyalg RSA -keystore server.keystore
</span></span></code></pre></div><p>过程中根据需求填写描述信息,默认证书的描述信息如下:</p>
<pre tabindex="0"><code>名字和姓⽒:hugegraph
组织单位名称:hugegraph
组织名称:hugegraph
城市或区域名称:BJ
州或省份名称:BJ
国家代码:CN
</code></pre><ol start="2">
<li>根据服务端私钥,导出服务端证书</li>
</ol>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>keytool -export -alias serverkey -keystore server.keystore -file server.crt
</span></span></code></pre></div><p>server.crt 就是服务端的证书</p>
<h4 id="客户端">客户端</h4>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>keytool -import -alias serverkey -file server.crt -keystore client.truststore
</span></span></code></pre></div><p>client.truststore 是给客户端⽤的,其中保存着受信任的证书</p>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-8f8368cdf9ec684d30761c6d28a34179">5 - API</h1>
</div>
<div class="td-content" style="">
<h1 id="pg-a809bf70d5493b5046619919800e4de6">5.1 - HugeGraph RESTful API</h1>
<p>HugeGraph-Server通过HugeGraph-API基于HTTP协议为Client提供操作图的接口,主要包括元数据和
图数据的增删改查,遍历算法,变量,图操作及其他操作。</p>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-698c3217de07a8cb0dc0e93dbae29ee9">5.1.1 - Schema API</h1>
<h3 id="11-schema">1.1 Schema</h3>
<p>HugeGraph 提供单一接口获取某个图的全部 Schema 信息,包括:PropertyKey、VertexLabel、EdgeLabel 和 IndexLabel。</p>
<h5 id="method--url">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/schema
</code></pre><h5 id="response-status">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;propertykeys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">7</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;INT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cardinality&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;aggregate_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;NONE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;write_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;OLTP&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CREATED&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;~create_time&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2021-09-03 15:13:40.741&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">6</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;TEXT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cardinality&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;aggregate_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;NONE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;write_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;OLTP&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CREATED&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;~create_time&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2021-09-03 15:13:40.729&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">3</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;TEXT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cardinality&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;aggregate_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;NONE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;write_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;OLTP&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CREATED&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;~create_time&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2021-09-03 15:13:40.691&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;INT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cardinality&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;aggregate_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;NONE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;write_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;OLTP&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CREATED&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;~create_time&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2021-09-03 15:13:40.678&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">5</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;TEXT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cardinality&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;aggregate_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;NONE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;write_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;OLTP&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CREATED&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;~create_time&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2021-09-03 15:13:40.718&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">4</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;DOUBLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cardinality&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;aggregate_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;NONE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;write_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;OLTP&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CREATED&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;~create_time&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2021-09-03 15:13:40.707&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;TEXT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cardinality&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;aggregate_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;NONE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;write_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;OLTP&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CREATED&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;~create_time&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2021-09-03 15:13:40.609&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertexlabels&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id_strategy&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;PRIMARY_KEY&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;primary_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_labels&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;personByCity&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;personByAgeAndCity&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;city&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CREATED&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ttl&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;~create_time&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2021-09-03 15:13:40.783&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id_strategy&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;PRIMARY_KEY&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;primary_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;price&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_labels&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;softwareByPrice&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;price&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CREATED&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ttl&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;~create_time&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2021-09-03 15:13:40.840&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;edgelabels&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;frequency&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;MULTIPLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;sort_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;date&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;weight&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_labels&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;knowsByWeight&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;date&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CREATED&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ttl&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;~create_time&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2021-09-03 15:13:41.840&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;frequency&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;sort_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;weight&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_labels&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;createdByDate&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;createdByWeight&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;date&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CREATED&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ttl&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;~create_time&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2021-09-03 15:13:41.868&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;indexlabels&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;personByCity&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;VERTEX_LABEL&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SECONDARY&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;fields&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;city&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CREATED&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;~create_time&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2021-09-03 15:13:40.886&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">4</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;createdByDate&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;EDGE_LABEL&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SECONDARY&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;fields&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;date&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CREATED&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;~create_time&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2021-09-03 15:13:41.878&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">5</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;createdByWeight&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;EDGE_LABEL&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;RANGE_DOUBLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;fields&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;weight&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CREATED&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;~create_time&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2021-09-03 15:13:42.117&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;personByAgeAndCity&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;VERTEX_LABEL&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SECONDARY&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;fields&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;city&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CREATED&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;~create_time&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2021-09-03 15:13:41.351&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">3</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;softwareByPrice&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;VERTEX_LABEL&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;RANGE_INT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;fields&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;price&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CREATED&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;~create_time&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2021-09-03 15:13:41.587&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">6</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;knowsByWeight&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;EDGE_LABEL&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;RANGE_DOUBLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;fields&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;weight&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;CREATED&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;~create_time&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2021-09-03 15:13:42.376&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-f7f4b3b6f4b7a965f8c30675df8e56f8">5.1.2 - PropertyKey API</h1>
<h3 id="12-propertykey">1.2 PropertyKey</h3>
<p>Params说明:</p>
<ul>
<li>name:属性类型名称,必填</li>
<li>data_type:属性类型数据类型,包括:bool、byte、int、long、float、double、string、date、uuid、blob,默认string类型</li>
<li>cardinality:属性类型基数,包括:single、list、set,默认single</li>
</ul>
<p>请求体字段说明:</p>
<ul>
<li>id:属性类型id值</li>
<li>properties:属性的属性,对于属性而言,此项为空</li>
<li>user_data:设置属性类型的通用信息,比如可设置age属性的取值范围,最小为0,最大为100;目前此项不做任何校验,只为后期拓展提供预留入口</li>
</ul>
<h4 id="121-创建一个-propertykey">1.2.1 创建一个 PropertyKey</h4>
<h5 id="method--url">Method &amp; Url</h5>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/hugegraph/schema/propertykeys
</code></pre><h5 id="request-body">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;property_key&#34;</span> <span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;INT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cardinality&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">202</span>
</span></span></code></pre></div><h5 id="response-body">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;INT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cardinality&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="122-为已存在的-propertykey-添加或移除-userdata">1.2.2 为已存在的 PropertyKey 添加或移除 userdata</h4>
<h5 id="params">Params</h5>
<ul>
<li>action: 表示当前行为是添加还是移除,取值为<code>append</code>(添加)和<code>eliminate</code>(移除)</li>
</ul>
<h5 id="method--url-1">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://localhost:8080/graphs/hugegraph/schema/propertykeys/age?action=append
</code></pre><h5 id="request-body-1">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;property_key&#34;</span> <span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;min&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">100</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_id&#34;</span> <span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status-1">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">202</span>
</span></span></code></pre></div><h5 id="response-body-1">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;INT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cardinality&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;min&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">100</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="123-获取所有的-propertykey">1.2.3 获取所有的 PropertyKey</h4>
<h5 id="method--url-2">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/schema/propertykeys
</code></pre><h5 id="response-status-2">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-2">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;propertykeys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">3</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;TEXT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cardinality&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;INT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cardinality&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">5</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;TEXT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cardinality&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">4</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;DOUBLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cardinality&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">6</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;TEXT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cardinality&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;TEXT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cardinality&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">7</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;INT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cardinality&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="124-根据name获取propertykey">1.2.4 根据name获取PropertyKey</h4>
<h5 id="method--url-3">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/schema/propertykeys/age
</code></pre><p>其中,<code>age</code>为要获取的PropertyKey的名字</p>
<h5 id="response-status-3">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-3">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;INT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cardinality&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="125-根据name删除propertykey">1.2.5 根据name删除PropertyKey</h4>
<h5 id="method--url-4">Method &amp; Url</h5>
<pre tabindex="0"><code>DELETE http://localhost:8080/graphs/hugegraph/schema/propertykeys/age
</code></pre><p>其中,<code>age</code>为要获取的PropertyKey的名字</p>
<h5 id="response-status-4">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">202</span>
</span></span></code></pre></div><h5 id="response-body-4">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;property_key&#34;</span> <span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;INT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cardinality&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_id&#34;</span> <span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-28cb205879be97a55ddc8cd365c4438e">5.1.3 - VertexLabel API</h1>
<h3 id="13-vertexlabel">1.3 VertexLabel</h3>
<p>假设已经创建好了1.1.3中列出来的 PropertyKeys</p>
<p>Params说明</p>
<ul>
<li>id:顶点类型id值</li>
<li>name:顶点类型名称,必填</li>
<li>id_strategy: 顶点类型的ID策略,主键ID、自动生成、自定义字符串、自定义数字、自定义UUID,默认主键ID</li>
<li>properties: 顶点类型关联的属性类型</li>
<li>primary_keys: 主键属性,当ID策略为PRIMARY_KEY时必须有值,其他ID策略时必须为空;</li>
<li>enable_label_index: 是否开启类型索引,默认关闭</li>
<li>index_names:顶点类型创建的索引,详情见3.4</li>
<li>nullable_keys:可为空的属性</li>
<li>user_data:设置顶点类型的通用信息,作用同属性类型</li>
</ul>
<h4 id="131-创建一个vertexlabel">1.3.1 创建一个VertexLabel</h4>
<h5 id="method--url">Method &amp; Url</h5>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/hugegraph/schema/vertexlabels
</code></pre><h5 id="request-body">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id_strategy&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;DEFAULT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;primary_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">201</span>
</span></span></code></pre></div><h5 id="response-body">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;primary_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id_strategy&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;PRIMARY_KEY&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person2&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_names&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>从 hugegraph-server v0.11.2 版本开始支持顶点的 TTL 功能。顶点的 TTL 是通过 VertexLabel 来设置的。比如希望 person 类型的顶点存活时间为一天,需要在创建 person VertexLabel 的时候将 TTL 字段设置为 86400000,即单位为毫秒。</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id_strategy&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;DEFAULT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;primary_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ttl&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">86400000</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>另外,当顶点中带有&quot;创建时间&quot;的属性且希望以&quot;创建时间&quot;属性作为计算顶点存活时间的起点时,可以设置 VertexLabel 中的 ttl_start_time 字段。比如 person VertexLabel 有 createdTime 属性,且 createdTime 是 Date 类型的参数,希望 person 类型的顶点从创建开始存活一天的时间,那么创建 person VertexLabel 的 Request Body 如下:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id_strategy&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;DEFAULT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;createdTime&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;primary_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ttl&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">86400000</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ttl_start_time&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;createdTime&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="132-为已存在的vertexlabel添加properties或userdata或者移除userdata目前不支持移除properties">1.3.2 为已存在的VertexLabel添加properties或userdata,或者移除userdata(目前不支持移除properties)</h4>
<h5 id="params">Params</h5>
<ul>
<li>action: 表示当前行为是添加还是移除,取值为<code>append</code>(添加)和<code>eliminate</code>(移除)</li>
</ul>
<h5 id="method--url-1">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://localhost:8080/graphs/hugegraph/schema/vertexlabels/person?action=append
</code></pre><h5 id="request-body-1">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;city&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;super&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;animal&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status-1">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-1">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;primary_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id_strategy&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;PRIMARY_KEY&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_names&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;city&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;super&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;animal&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="133-获取所有的vertexlabel">1.3.3 获取所有的VertexLabel</h4>
<h5 id="method--url-2">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/schema/vertexlabels
</code></pre><h5 id="response-status-2">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-2">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertexlabels&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;primary_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id_strategy&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;PRIMARY_KEY&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_names&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;city&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;super&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;animal&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;primary_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id_strategy&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;PRIMARY_KEY&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_names&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;lang&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;price&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="134-根据name获取vertexlabel">1.3.4 根据name获取VertexLabel</h4>
<h5 id="method--url-3">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/schema/vertexlabels/person
</code></pre><h5 id="response-status-3">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-3">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;primary_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id_strategy&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;PRIMARY_KEY&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_names&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;city&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;super&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;animal&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="135-根据name删除vertexlabel">1.3.5 根据name删除VertexLabel</h4>
<p>删除 VertexLabel 会导致删除对应的顶点以及相关的索引数据,会产生一个异步任务</p>
<h5 id="method--url-4">Method &amp; Url</h5>
<pre tabindex="0"><code>DELETE http://localhost:8080/graphs/hugegraph/schema/vertexlabels/person
</code></pre><h5 id="response-status-4">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">202</span>
</span></span></code></pre></div><h5 id="response-body-4">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>注:</p>
<blockquote>
<p>可以通过<code>GET http://localhost:8080/graphs/hugegraph/tasks/1</code>(其中&quot;1&quot;是task_id)来查询异步任务的执行状态,更多<a href="../task">异步任务RESTful API</a></p>
</blockquote>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-41864d99c39fc7040549f6eaf5441daf">5.1.4 - EdgeLabel API</h1>
<h3 id="14-edgelabel">1.4 EdgeLabel</h3>
<p>假设已经创建好了1.2.3中的 PropertyKeys 和 1.3.3中的 VertexLabels</p>
<p>Params说明</p>
<ul>
<li>name:顶点类型名称,必填</li>
<li>source_label: 源顶点类型的名称,必填</li>
<li>target_label: 目标顶点类型的名称,必填</li>
<li>frequency:两个点之间是否可以有多条边,可以取值SINGLE和MULTIPLE,非必填,默认值SINGLE</li>
<li>properties: 边类型关联的属性类型,选填</li>
<li>sort_keys: 当允许关联多次时,指定区分键属性列表</li>
<li>nullable_keys:可为空的属性,选填,默认可为空</li>
<li>enable_label_index: 是否开启类型索引,默认关闭</li>
</ul>
<h4 id="141-创建一个edgelabel">1.4.1 创建一个EdgeLabel</h4>
<h5 id="method--url">Method &amp; Url</h5>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/hugegraph/schema/edgelabels
</code></pre><h5 id="request-body">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;frequency&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;date&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;sort_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">201</span>
</span></span></code></pre></div><h5 id="response-body">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;sort_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_names&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;date&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;frequency&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>从 hugegraph-server v0.11.2 版本开始支持边的 TTL 功能。边的 TTL 是通过 EdgeLabel 来设置的。比如希望 knows 类型的边存活时间为一天,需要在创建 knows EdgeLabel 的时候将 TTL 字段设置为 86400000,即单位为毫秒。</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;sort_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_names&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;createdTime&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;frequency&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ttl&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">86400000</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>另外,当边中带有&quot;创建时间&quot;的属性且希望以&quot;创建时间&quot;属性作为计算边存活时间的起点时,可以设置 EdgeLabel 中的 ttl_start_time 字段。比如 knows EdgeLabel 有 createdTime 属性,且 createdTime 是 Date 类型的参数,希望 knows 类型的边从创建开始存活一天的时间,那么创建 knows EdgeLabel 的 Request Body 如下:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;sort_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_names&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;createdTime&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;frequency&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ttl&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">86400000</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ttl_start_time&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;createdTime&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="142-为已存在的edgelabel添加properties或userdata或者移除userdata目前不支持移除properties">1.4.2 为已存在的EdgeLabel添加properties或userdata,或者移除userdata(目前不支持移除properties)</h4>
<h5 id="params">Params</h5>
<ul>
<li>action: 表示当前行为是添加还是移除,取值为<code>append</code>(添加)和<code>eliminate</code>(移除)</li>
</ul>
<h5 id="method--url-1">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://localhost:8080/graphs/hugegraph/schema/edgelabels/created?action=append
</code></pre><h5 id="request-body-1">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;weight&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;weight&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status-1">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-1">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;sort_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_names&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;weight&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;frequency&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;weight&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="143-获取所有的edgelabel">1.4.3 获取所有的EdgeLabel</h4>
<h5 id="method--url-2">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/schema/edgelabels
</code></pre><h5 id="response-status-2">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-2">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;edgelabels&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;sort_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_names&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;weight&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;frequency&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;weight&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;sort_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_names&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;weight&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;frequency&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="144-根据name获取edgelabel">1.4.4 根据name获取EdgeLabel</h4>
<h5 id="method--url-3">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/schema/edgelabels/created
</code></pre><h5 id="response-status-3">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-3">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;sort_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_names&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;weight&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;frequency&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SINGLE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nullable_keys&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;weight&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;enable_label_index&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="145-根据name删除edgelabel">1.4.5 根据name删除EdgeLabel</h4>
<p>删除 EdgeLabel 会导致删除对应的边以及相关的索引数据,会产生一个异步任务</p>
<h5 id="method--url-4">Method &amp; Url</h5>
<pre tabindex="0"><code>DELETE http://localhost:8080/graphs/hugegraph/schema/edgelabels/created
</code></pre><h5 id="response-status-4">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">202</span>
</span></span></code></pre></div><h5 id="response-body-4">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>注:</p>
<blockquote>
<p>可以通过<code>GET http://localhost:8080/graphs/hugegraph/tasks/1</code>(其中&quot;1&quot;是task_id)来查询异步任务的执行状态,更多<a href="../task">异步任务RESTful API</a></p>
</blockquote>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-7099742fb947ad5dfde9e72216c10b8a">5.1.5 - IndexLabel API</h1>
<h3 id="15-indexlabel">1.5 IndexLabel</h3>
<p>假设已经创建好了1.1.3中的 PropertyKeys 、1.2.3中的 VertexLabels 以及 1.3.3中的 EdgeLabels</p>
<h4 id="151-创建一个indexlabel">1.5.1 创建一个IndexLabel</h4>
<h5 id="method--url">Method &amp; Url</h5>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/hugegraph/schema/indexlabels
</code></pre><h5 id="request-body">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;personByCity&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;VERTEX_LABEL&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SECONDARY&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;fields&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;city&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">202</span>
</span></span></code></pre></div><h5 id="response-body">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;VERTEX_LABEL&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;personByCity&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;fields&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;city&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SECONDARY&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="152-获取所有的indexlabel">1.5.2 获取所有的IndexLabel</h4>
<h5 id="method--url-1">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/schema/indexlabels
</code></pre><h5 id="response-status-1">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-1">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;indexlabels&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">3</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;VERTEX_LABEL&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;softwareByPrice&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;fields&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;price&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;RANGE&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">4</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;EDGE_LABEL&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;createdByDate&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;fields&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;date&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SECONDARY&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;VERTEX_LABEL&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;personByCity&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;fields&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;city&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SECONDARY&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">3</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;VERTEX_LABEL&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;personByAgeAndCity&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;fields&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;city&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SECONDARY&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="153-根据name获取indexlabel">1.5.3 根据name获取IndexLabel</h4>
<h5 id="method--url-2">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/schema/indexlabels/personByCity
</code></pre><h5 id="response-status-2">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-2">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;VERTEX_LABEL&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;base_value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;personByCity&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;fields&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;city&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;index_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;SECONDARY&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="154-根据name删除indexlabel">1.5.4 根据name删除IndexLabel</h4>
<p>删除 IndexLabel 会导致删除相关的索引数据,会产生一个异步任务</p>
<h5 id="method--url-3">Method &amp; Url</h5>
<pre tabindex="0"><code>DELETE http://localhost:8080/graphs/hugegraph/schema/indexlabels/personByCity
</code></pre><h5 id="response-status-3">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">202</span>
</span></span></code></pre></div><h5 id="response-body-3">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>注:</p>
<blockquote>
<p>可以通过<code>GET http://localhost:8080/graphs/hugegraph/tasks/1</code>(其中&quot;1&quot;是task_id)来查询异步任务的执行状态,更多<a href="../task">异步任务RESTful API</a></p>
</blockquote>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-bde129922f801ad9560757fcec64d05c">5.1.6 - Rebuild API</h1>
<h3 id="16-rebuild">1.6 Rebuild</h3>
<h4 id="161-rebuild-indexlabel">1.6.1 Rebuild IndexLabel</h4>
<h5 id="method--url">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://localhost:8080/graphs/hugegraph/jobs/rebuild/indexlabels/personByCity
</code></pre><h5 id="response-status">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">202</span>
</span></span></code></pre></div><h5 id="response-body">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>Note:</p>
<blockquote>
<p>You can get the asynchronous job status by <code>GET http://localhost:8080/graphs/hugegraph/tasks/${task_id}</code> (the task_id here should be 1). See More <a href="../task">AsyncJob RESTfull API</a></p>
</blockquote>
<h4 id="162-rebulid-all-indexs-of-vertexlabel">1.6.2 Rebulid all Indexs of VertexLabel</h4>
<h5 id="method--url-1">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://localhost:8080/graphs/hugegraph/jobs/rebuild/vertexlabels/person
</code></pre><h5 id="response-status-1">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">202</span>
</span></span></code></pre></div><h5 id="response-body-1">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>Note:</p>
<blockquote>
<p>You can get the asynchronous job status by <code>GET http://localhost:8080/graphs/hugegraph/tasks/${task_id}</code> (the task_id here should be 2). See More <a href="../task">AsyncJob RESTfull API</a></p>
</blockquote>
<h4 id="163-rebulid-all-indexs-of-edgelabel">1.6.3 Rebulid all Indexs of EdgeLabel</h4>
<h5 id="method--url-2">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://localhost:8080/graphs/hugegraph/jobs/rebuild/edgelabels/created
</code></pre><h5 id="response-status-2">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">202</span>
</span></span></code></pre></div><h5 id="response-body-2">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">3</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>Note:</p>
<blockquote>
<p>You can get the asynchronous job status by <code>GET http://localhost:8080/graphs/hugegraph/tasks/${task_id}</code> (the task_id here should be 3). See More <a href="../task">AsyncJob RESTfull API</a></p>
</blockquote>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-86bf520fd6b098231f4af6590328e871">5.1.7 - Vertex API</h1>
<h3 id="21-vertex">2.1 Vertex</h3>
<p>顶点类型中的 Id 策略决定了顶点的 Id 类型,其对应关系如下:</p>
<table>
<thead>
<tr>
<th>Id_Strategy</th>
<th>id type</th>
</tr>
</thead>
<tbody>
<tr>
<td>AUTOMATIC</td>
<td>number</td>
</tr>
<tr>
<td>PRIMARY_KEY</td>
<td>string</td>
</tr>
<tr>
<td>CUSTOMIZE_STRING</td>
<td>string</td>
</tr>
<tr>
<td>CUSTOMIZE_NUMBER</td>
<td>number</td>
</tr>
<tr>
<td>CUSTOMIZE_UUID</td>
<td>uuid</td>
</tr>
</tbody>
</table>
<p>顶点的 <code>GET/PUT/DELETE</code> API 中 url 的 id 部分传入的应是带有类型信息的 id 值,这个类型信息用 json 串是否带引号表示,也就是说:</p>
<ul>
<li>当 id 类型为 number 时,url 中的 id 不带引号,形如 xxx/vertices/123456</li>
<li>当 id 类型为 string 时,url 中的 id 带引号,形如 xxx/vertices/&ldquo;123456&rdquo;</li>
</ul>
<hr>
<p>接下来的示例均假设已经创建好了前述的各种 schema 信息</p>
<h4 id="211-创建一个顶点">2.1.1 创建一个顶点</h4>
<h5 id="method--url">Method &amp; Url</h5>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/hugegraph/graph/vertices
</code></pre><h5 id="request-body">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">29</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">201</span>
</span></span></code></pre></div><h5 id="response-body">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;marko&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">29</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="212-创建多个顶点">2.1.2 创建多个顶点</h4>
<h5 id="method--url-1">Method &amp; Url</h5>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/hugegraph/graph/vertices/batch
</code></pre><h5 id="request-body-1">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">29</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">199</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">]</span>
</span></span></code></pre></div><h5 id="response-status-1">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">201</span>
</span></span></code></pre></div><h5 id="response-body-1">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">]</span>
</span></span></code></pre></div><h4 id="213-更新顶点属性">2.1.3 更新顶点属性</h4>
<h5 id="method--url-2">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://127.0.0.1:8080/graphs/hugegraph/graph/vertices/&#34;1:marko&#34;?action=append
</code></pre><h5 id="request-body-2">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">30</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><blockquote>
<p>注意:属性的取值是有三种类别的,分别是single、set和list。如果是single,表示增加或更新属性值;如果是set或list,则表示追加属性值。</p>
</blockquote>
<h5 id="response-status-2">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-2">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;marko&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">30</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="214-批量更新顶点属性">2.1.4 批量更新顶点属性</h4>
<h5 id="功能说明">功能说明</h5>
<p>批量更新顶点的属性,并支持多种更新策略,包括</p>
<ul>
<li>SUM: 数值累加</li>
<li>BIGGER: 两个数字/日期取更大的</li>
<li>SMALLER: 两个数字/日期取更小的</li>
<li>UNION: Set属性取并集</li>
<li>INTERSECTION: Set属性取交集</li>
<li>APPEND: List属性追加元素</li>
<li>ELIMINATE: List/Set属性删除元素</li>
<li>OVERRIDE: 覆盖已有属性,如果新属性为null,则仍然使用旧属性</li>
</ul>
<p>假设原顶点及属性为:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">328</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">32</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;Beijing&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">0.1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;hobby&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;reading&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;football&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="method--url-3">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://127.0.0.1:8080/graphs/hugegraph/graph/vertices/batch
</code></pre><h5 id="request-body-3">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;c++&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">299</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;Shanghai&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">0.2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;hobby&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;swiming&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;update_strategies&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;BIGGER&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;OVERRIDE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;OVERRIDE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;SUM&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;hobby&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;UNION&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;create_if_not_exist&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#204a87;font-weight:bold">true</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status-3">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-3">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;c++&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">328</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">32</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Shanghai&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.3</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;hobby&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;swiming&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;reading&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;football&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>结果分析:</p>
<ul>
<li>lang 属性未指定更新策略,直接用新值覆盖旧值,无论新值是否为null;</li>
<li>price 属性指定 BIGGER 的更新策略,旧属性值为328,新属性值为299,所以仍然保留了旧属性值328;</li>
<li>age 属性指定 OVERRIDE 更新策略,而新属性值中未传入age,相当于age为null,所以仍然保留了原属性值32;</li>
<li>city 属性也指定了 OVERRIDE 更新策略,且新属性值不为null,所以覆盖了旧值;</li>
<li>weight 属性指定了 SUM 更新策略,旧属性值为0.1,新属性值为0.2,最后的值为0.3;</li>
<li>hobby 属性(基数为Set)指定了 UNION 更新策略,所以新值与旧值取了并集;</li>
</ul>
<p>其他的更新策略使用方式可以类推,不再赘述。</p>
<h4 id="215-删除顶点属性">2.1.5 删除顶点属性</h4>
<h5 id="method--url-4">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://127.0.0.1:8080/graphs/hugegraph/graph/vertices/&#34;1:marko&#34;?action=eliminate
</code></pre><h5 id="request-body-4">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><blockquote>
<p>注意:这里会直接删除属性(删除key和所有value),无论其属性的取值是single、set或list。</p>
</blockquote>
<h5 id="response-status-4">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-4">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;marko&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">30</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="216-获取符合条件的顶点">2.1.6 获取符合条件的顶点</h4>
<h5 id="params">Params</h5>
<ul>
<li>label: 顶点类型</li>
<li>properties: 属性键值对(根据属性查询的前提是预先建立了索引)</li>
<li>limit: 查询最大数目</li>
<li>page: 页号</li>
</ul>
<p>以上参数都是可选的,如果提供page参数,必须提供limit参数,不允许带其他参数。<code>label, properties</code><code>limit</code>可以任意组合。</p>
<p>属性键值对由JSON格式的属性名称和属性值组成,允许多个属性键值对作为查询条件,属性值支持精确匹配和范围匹配,精确匹配时形如<code>properties={&quot;age&quot;:29}</code>,范围匹配时形如<code>properties={&quot;age&quot;:&quot;P.gt(29)&quot;}</code>,范围匹配支持的表达式如下:</p>
<table>
<thead>
<tr>
<th>表达式</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>P.eq(number)</td>
<td>属性值等于number的顶点</td>
</tr>
<tr>
<td>P.neq(number)</td>
<td>属性值不等于number的顶点</td>
</tr>
<tr>
<td>P.lt(number)</td>
<td>属性值小于number的顶点</td>
</tr>
<tr>
<td>P.lte(number)</td>
<td>属性值小于等于number的顶点</td>
</tr>
<tr>
<td>P.gt(number)</td>
<td>属性值大于number的顶点</td>
</tr>
<tr>
<td>P.gte(number)</td>
<td>属性值大于等于number的顶点</td>
</tr>
<tr>
<td>P.between(number1,number2)</td>
<td>属性值大于等于number1且小于number2的顶点</td>
</tr>
<tr>
<td>P.inside(number1,number2)</td>
<td>属性值大于number1且小于number2的顶点</td>
</tr>
<tr>
<td>P.outside(number1,number2)</td>
<td>属性值小于number1且大于number2的顶点</td>
</tr>
<tr>
<td>P.within(value1,value2,value3,&hellip;)</td>
<td>属性值等于任何一个给定value的顶点</td>
</tr>
</tbody>
</table>
<p><strong>查询所有 age 为 20 且 label 为 person 的顶点</strong></p>
<h5 id="method--url-5">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/graph/vertices?label=person&amp;properties={&#34;age&#34;:29}&amp;limit=1
</code></pre><h5 id="response-status-5">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-5">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;marko&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">29</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p><strong>分页查询所有顶点,获取第一页(page不带参数值),限定3条</strong></p>
<h5 id="method--url-6">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/graph/vertices?page&amp;limit=3
</code></pre><h5 id="response-status-6">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-6">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:ripple&gt;price&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">199</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:ripple&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;ripple&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:ripple&gt;lang&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;java&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:vadas&gt;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Hongkong&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:vadas&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vadas&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:vadas&gt;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">27</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:peter&gt;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Shanghai&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:peter&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;peter&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:peter&gt;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">35</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;page&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;001000100853313a706574657200f07ffffffc00e797c6349be736fffc8699e8a502efe10004&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>返回的body里面是带有下一页的页号信息的,<code>&quot;page&quot;: &quot;001000100853313a706574657200f07ffffffc00e797c6349be736fffc8699e8a502efe10004&quot;</code>
在查询下一页的时候将该值赋给page参数。</p>
<p><strong>分页查询所有顶点,获取下一页(page带上上一页返回的page值),限定3条</strong></p>
<h5 id="method--url-7">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/graph/vertices?page=001000100853313a706574657200f07ffffffc00e797c6349be736fffc8699e8a502efe10004&amp;limit=3
</code></pre><h5 id="response-status-7">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-7">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:josh&gt;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:josh&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;josh&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:josh&gt;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">32</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;marko&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">29</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&gt;price&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">328</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;lop&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&gt;lang&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;java&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;page&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">null</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>此时<code>&quot;page&quot;: null</code>表示已经没有下一页了 (注: 后端为 Cassandra 时,为了性能考虑,返回页恰好为最后一页时,返回 <code>page</code> 值可能非空,通过该 <code>page</code> 再请求下一页数据时则返回 <code>空数据</code><code>page = null</code>,其他情况类似)</p>
<h4 id="217-根据id获取顶点">2.1.7 根据Id获取顶点</h4>
<h5 id="method--url-8">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/graph/vertices/&#34;1:marko&#34;
</code></pre><h5 id="response-status-8">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-8">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;marko&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">29</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="218-根据id删除顶点">2.1.8 根据Id删除顶点</h4>
<h5 id="params-1">Params</h5>
<ul>
<li>label: 顶点类型,可选参数</li>
</ul>
<p><strong>仅根据Id删除顶点</strong></p>
<h5 id="method--url-9">Method &amp; Url</h5>
<pre tabindex="0"><code>DELETE http://localhost:8080/graphs/hugegraph/graph/vertices/&#34;1:marko&#34;
</code></pre><h5 id="response-status-9">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">204</span>
</span></span></code></pre></div><p><strong>根据Label+Id删除顶点</strong></p>
<p>通过指定Label参数和Id来删除顶点时,一般来说其性能比仅根据Id删除会更好。</p>
<h5 id="method--url-10">Method &amp; Url</h5>
<pre tabindex="0"><code>DELETE http://localhost:8080/graphs/hugegraph/graph/vertices/&#34;1:marko&#34;?label=person
</code></pre><h5 id="response-status-10">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">204</span>
</span></span></code></pre></div>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-f40127b155ddd802d50c507ff1cf5530">5.1.8 - Edge API</h1>
<h3 id="22-edge">2.2 Edge</h3>
<p>顶点 id 格式的修改也影响到了边的 Id 以及源顶点和目标顶点 id 的格式。</p>
<p>EdgeId是由 <code>src-vertex-id + direction + label + sort-values + tgt-vertex-id</code> 拼接而成,
但是这里的顶点id类型不是通过引号区分的,而是根据前缀区分:</p>
<ul>
<li>当 id 类型为 number 时,EdgeId 的顶点 id 前有一个前缀<code>L</code> ,形如 &ldquo;L123456&gt;1&raquo;L987654&rdquo;</li>
<li>当 id 类型为 string 时,EdgeId 的顶点 id 前有一个前缀<code>S</code> ,形如 &ldquo;S1:peter&gt;1&raquo;S2:lop&rdquo;</li>
</ul>
<hr>
<p>接下来的示例均假设已经创建好了前述的各种schema和vertex信息</p>
<h4 id="221-创建一条边">2.2.1 创建一条边</h4>
<p>Params说明</p>
<ul>
<li>label:边类型名称,必填</li>
<li>outV:源顶点id,必填</li>
<li>inV:目标顶点id,必填</li>
<li>outVLabel:源顶点类型。必填</li>
<li>inVLabel:目标顶点类型。必填</li>
<li>properties: 边关联的属性,对象内部结构为:
<ol>
<li>name:属性名称</li>
<li>value:属性值</li>
</ol>
</li>
</ul>
<h5 id="method--url">Method &amp; Url</h5>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/hugegraph/graph/edges
</code></pre><h5 id="request-body">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2017-5-18&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.2</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">201</span>
</span></span></code></pre></div><h5 id="response-body">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S1:peter&gt;1&gt;&gt;S2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2017-5-18&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.2</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="222-创建多条边">2.2.2 创建多条边</h4>
<h5 id="params">Params</h5>
<ul>
<li>check_vertex: 是否检查顶点存在(true | false),当设置为 true 而待插入边的源顶点或目标顶点不存在时会报错。</li>
</ul>
<h5 id="method--url-1">Method &amp; Url</h5>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/hugegraph/graph/edges/batch
</code></pre><h5 id="request-body-1">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2017-5-18&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.2</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2016-01-10&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.5</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">]</span>
</span></span></code></pre></div><h5 id="response-status-1">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">201</span>
</span></span></code></pre></div><h5 id="response-body-1">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;S1:peter&gt;1&gt;&gt;S2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;S1:marko&gt;2&gt;&gt;S1:vadas&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">]</span>
</span></span></code></pre></div><h4 id="223-更新边属性">2.2.3 更新边属性</h4>
<h5 id="method--url-2">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://localhost:8080/graphs/hugegraph/graph/edges/S1:peter&gt;1&gt;&gt;S2:lop?action=append
</code></pre><h5 id="request-body-2">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1.0</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><blockquote>
<p>注意:属性的取值是有三种类别的,分别是single、set和list。如果是single,表示增加或更新属性值;如果是set或list,则表示追加属性值。</p>
</blockquote>
<h5 id="response-status-2">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-2">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S1:peter&gt;1&gt;&gt;S2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2017-5-18&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="224-批量更新边属性">2.2.4 批量更新边属性</h4>
<h5 id="功能说明">功能说明</h5>
<p>与批量更新顶点属性类似</p>
<p>假设原边及属性为:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;edges&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;S1:josh&gt;2&gt;&gt;S2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1512835200000</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;S1:marko&gt;1&gt;7JooBil0&gt;S1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1361289600000</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="method--url-3">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://127.0.0.1:8080/graphs/hugegraph/graph/edges/batch
</code></pre><h5 id="request-body-3">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;edges&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;S1:josh&gt;2&gt;&gt;S2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">0.1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1522835200000</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;S1:marko&gt;1&gt;7JooBil0&gt;S1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">0.2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1301289600000</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;update_strategies&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;SUM&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;BIGGER&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;check_vertex&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;create_if_not_exist&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#204a87;font-weight:bold">true</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status-3">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-3">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;edges&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;S1:josh&gt;2&gt;&gt;S2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1522835200000</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;S1:marko&gt;1&gt;7JooBil0&gt;S1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1.2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1301289600000</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="225-删除边属性">2.2.5 删除边属性</h4>
<h5 id="method--url-4">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://localhost:8080/graphs/hugegraph/graph/edges/S1:peter&gt;1&gt;&gt;S2:lop?action=eliminate
</code></pre><h5 id="request-body-4">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1.0</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><blockquote>
<p>注意:这里会直接删除属性(删除key和所有value),无论其属性的取值是single、set或list。</p>
</blockquote>
<h5 id="response-status-4">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-4">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S1:peter&gt;1&gt;&gt;S2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;20170324&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="226-获取符合条件的边">2.2.6 获取符合条件的边</h4>
<h5 id="params-1">Params</h5>
<ul>
<li>vertex_id: 顶点id</li>
<li>direction: 边的方向(OUT | IN | BOTH)</li>
<li>label: 边的标签</li>
<li>properties: 属性键值对(根据属性查询的前提是预先建立了索引)</li>
<li>offset:偏移,默认为0</li>
<li>limit: 查询数目,默认为100</li>
<li>page: 页号</li>
</ul>
<p>支持的查询有以下几种:</p>
<ul>
<li>提供vertex_id参数时,不可以使用参数page,direction、label、properties可选,offset和limit可以
限制结果范围</li>
<li>不提供vertex_id参数时,label和properties可选
<ul>
<li>如果使用page参数,则:offset参数不可用(不填或者为0),direction不可用,properties最多只能有一个</li>
<li>如果不使用page参数,则:offset和limit可以用来限制结果范围,direction参数忽略</li>
</ul>
</li>
</ul>
<p>属性键值对由JSON格式的属性名称和属性值组成,允许多个属性键值对作为查询条件,属性值支持精确匹配和范围匹配,精确匹配时形如<code>properties={&quot;weight&quot;:0.8}</code>,范围匹配时形如<code>properties={&quot;age&quot;:&quot;P.gt(0.8)&quot;}</code>,范围匹配支持的表达式如下:</p>
<table>
<thead>
<tr>
<th>表达式</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>P.eq(number)</td>
<td>属性值等于number的边</td>
</tr>
<tr>
<td>P.neq(number)</td>
<td>属性值不等于number的边</td>
</tr>
<tr>
<td>P.lt(number)</td>
<td>属性值小于number的边</td>
</tr>
<tr>
<td>P.lte(number)</td>
<td>属性值小于等于number的边</td>
</tr>
<tr>
<td>P.gt(number)</td>
<td>属性值大于number的边</td>
</tr>
<tr>
<td>P.gte(number)</td>
<td>属性值大于等于number的边</td>
</tr>
<tr>
<td>P.between(number1,number2)</td>
<td>属性值大于等于number1且小于number2的边</td>
</tr>
<tr>
<td>P.inside(number1,number2)</td>
<td>属性值大于number1且小于number2的边</td>
</tr>
<tr>
<td>P.outside(number1,number2)</td>
<td>属性值小于number1且大于number2的边</td>
</tr>
<tr>
<td>P.within(value1,value2,value3,&hellip;)</td>
<td>属性值等于任何一个给定value的边</td>
</tr>
</tbody>
</table>
<p><strong>查询与顶点 person:josh(vertex_id=&ldquo;1:josh&rdquo;) 相连且 label 为 created 的边</strong></p>
<h5 id="method--url-5">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://127.0.0.1:8080/graphs/hugegraph/graph/edges?vertex_id=&#34;1:josh&#34;&amp;direction=BOTH&amp;label=created&amp;properties={}
</code></pre><h5 id="response-status-5">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-5">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;edges&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S1:josh&gt;1&gt;&gt;S2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;20091111&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.4</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S1:josh&gt;1&gt;&gt;S2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;20171210&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p><strong>分页查询所有边,获取第一页(page不带参数值),限定3条</strong></p>
<h5 id="method--url-6">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://127.0.0.1:8080/graphs/hugegraph/graph/edges?page&amp;limit=3
</code></pre><h5 id="response-status-6">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-6">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;edges&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S1:peter&gt;2&gt;&gt;S2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;20170324&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S1:josh&gt;2&gt;&gt;S2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.4</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;20091111&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S1:josh&gt;2&gt;&gt;S2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;20171210&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;page&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;002500100753313a6a6f73681210010004000000020953323a726970706c65f07ffffffcf07ffffffd8460d63f4b398dd2721ed4fdb7716b420004&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>返回的body里面是带有下一页的页号信息的,<code>&quot;page&quot;: &quot;002500100753313a6a6f73681210010004000000020953323a726970706c65f07ffffffcf07ffffffd8460d63f4b398dd2721ed4fdb7716b420004&quot;</code>
在查询下一页的时候将该值赋给page参数。</p>
<p><strong>分页查询所有边,获取下一页(page带上上一页返回的page值),限定3条</strong></p>
<h5 id="method--url-7">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://127.0.0.1:8080/graphs/hugegraph/graph/edges?page=002500100753313a6a6f73681210010004000000020953323a726970706c65f07ffffffcf07ffffffd8460d63f4b398dd2721ed4fdb7716b420004&amp;limit=3
</code></pre><h5 id="response-status-7">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-7">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;edges&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S1:marko&gt;1&gt;20130220&gt;S1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;20130220&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S1:marko&gt;1&gt;20160110&gt;S1:vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.5</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;20160110&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S1:marko&gt;2&gt;&gt;S2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.4</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;20171210&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;page&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">null</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>此时<code>&quot;page&quot;: null</code>表示已经没有下一页了 (注: 后端为 Cassandra 时,为了性能考虑,返回页恰好为最后一页时,返回 <code>page</code> 值可能非空,通过该 <code>page</code> 再请求下一页数据时则返回 <code>空数据</code><code>page = null</code>,其他情况类似)</p>
<h4 id="227-根据id获取边">2.2.7 根据Id获取边</h4>
<h5 id="method--url-8">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/graph/edges/S1:peter&gt;1&gt;&gt;S2:lop
</code></pre><h5 id="response-status-8">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-8">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S1:peter&gt;1&gt;&gt;S2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2017-5-18&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.2</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="228-根据id删除边">2.2.8 根据Id删除边</h4>
<h5 id="params-2">Params</h5>
<ul>
<li>label: 边类型,可选参数</li>
</ul>
<p><strong>仅根据Id删除边</strong></p>
<h5 id="method--url-9">Method &amp; Url</h5>
<pre tabindex="0"><code>DELETE http://localhost:8080/graphs/hugegraph/graph/edges/S1:peter&gt;1&gt;&gt;S2:lop
</code></pre><h5 id="response-status-9">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">204</span>
</span></span></code></pre></div><p><strong>根据Label+Id删除边</strong></p>
<p>通过指定Label参数和Id来删除边时,一般来说其性能比仅根据Id删除会更好。</p>
<h5 id="method--url-10">Method &amp; Url</h5>
<pre tabindex="0"><code>DELETE http://localhost:8080/graphs/hugegraph/graph/edges/S1:peter&gt;1&gt;&gt;S2:lop?label=person
</code></pre><h5 id="response-status-10">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">204</span>
</span></span></code></pre></div>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-f0adc653be0b454ce1952bdaf0afefa6">5.1.9 - Traverser API</h1>
<h3 id="31-traverser-api概述">3.1 traverser API概述</h3>
<p>HugeGraphServer为HugeGraph图数据库提供了RESTful API接口。除了顶点和边的CRUD基本操作以外,还提供了一些遍历(traverser)方法,我们称为<code>traverser API</code>。这些遍历方法实现了一些复杂的图算法,方便用户对图进行分析和挖掘。</p>
<p>HugeGraph支持的Traverser API包括:</p>
<ul>
<li>K-out API,根据起始顶点,查找恰好N步可达的邻居,分为基础版和高级版:
<ul>
<li>基础版使用GET方法,根据起始顶点,查找恰好N步可达的邻居</li>
<li>高级版使用POST方法,根据起始顶点,查找恰好N步可达的邻居,与基础版的不同在于:
<ul>
<li>支持只统计邻居数量</li>
<li>支持边属性过滤</li>
<li>支持返回到达邻居的最短路径</li>
</ul>
</li>
</ul>
</li>
<li>K-neighbor API,根据起始顶点,查找N步以内可达的所有邻居,分为基础版和高级版:
<ul>
<li>基础版使用GET方法,根据起始顶点,查找N步以内可达的所有邻居</li>
<li>高级版使用POST方法,根据起始顶点,查找N步以内可达的所有邻居,与基础版的不同在于:
<ul>
<li>支持只统计邻居数量</li>
<li>支持边属性过滤</li>
<li>支持返回到达邻居的最短路径</li>
</ul>
</li>
</ul>
</li>
<li>Same Neighbors, 查询两个顶点的共同邻居</li>
<li>Jaccard Similarity API,计算jaccard相似度,包括两种:
<ul>
<li>一种是使用GET方法,计算两个顶点的邻居的相似度(交并比)</li>
<li>一种是使用POST方法,在全图中查找与起点的jaccard similarity最高的N个点</li>
</ul>
</li>
<li>Shortest Path API,查找两个顶点之间的最短路径</li>
<li>All Shortest Paths,查找两个顶点间的全部最短路径</li>
<li>Weighted Shortest Path,查找起点到目标点的带权最短路径</li>
<li>Single Source Shortest Path,查找一个点到其他各个点的加权最短路径</li>
<li>Multi Node Shortest Path,查找指定顶点集之间两两最短路径</li>
<li>Paths API,查找两个顶点间的全部路径,分为基础版和高级版:
<ul>
<li>基础版使用GET方法,根据起点和终点,查找两个顶点间的全部路径</li>
<li>高级版使用POST方法,根据一组起点和一组终点,查找两个集合间符合条件的全部路径</li>
</ul>
</li>
<li>Customized Paths API,从一批顶点出发,按(一种)模式遍历经过的全部路径</li>
<li>Template Path API,指定起点和终点以及起点和终点间路径信息,查找符合的路径</li>
<li>Crosspoints API,查找两个顶点的交点(共同祖先或者共同子孙)</li>
<li>Customized Crosspoints API,从一批顶点出发,按多种模式遍历,最后一步到达的顶点的交点</li>
<li>Rings API,从起始顶点出发,可到达的环路路径</li>
<li>Rays API,从起始顶点出发,可到达边界的路径(即无环路径)</li>
<li>Fusiform Similarity API,查找一个顶点的梭形相似点</li>
<li>Vertices API
<ul>
<li>按ID批量查询顶点;</li>
<li>获取顶点的分区;</li>
<li>按分区查询顶点;</li>
</ul>
</li>
<li>Edges API
<ul>
<li>按ID批量查询边;</li>
<li>获取边的分区;</li>
<li>按分区查询边;</li>
</ul>
</li>
</ul>
<h3 id="32-traverser-api详解">3.2. traverser API详解</h3>
<p>使用方法中的例子,都是基于TinkerPop官网给出的图:</p>
<p><img src="http://tinkerpop.apache.org/docs/3.4.0/images/tinkerpop-modern.png" alt="tinkerpop示例图"></p>
<p>数据导入程序如下:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">class</span> <span style="color:#000">Loader</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">static</span> <span style="color:#204a87;font-weight:bold">void</span> <span style="color:#000">main</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">String</span><span style="color:#ce5c00;font-weight:bold">[]</span> <span style="color:#000">args</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">HugeClient</span> <span style="color:#000">client</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">HugeClient</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;http://127.0.0.1:8080&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;hugegraph&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">SchemaManager</span> <span style="color:#000">schema</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">client</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">schema</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asInt</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asDouble</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asInt</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">nullableKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">nullableKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByCity&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">onV</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">secondary</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByAgeAndCity&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">onV</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">secondary</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;softwareByPrice&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">onV</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">range</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">multiTimes</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">sourceLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">targetLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">sortKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">nullableKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">sourceLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">targetLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">nullableKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;createdByDate&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">onE</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">secondary</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;createdByWeight&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">onE</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">range</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knowsByWeight&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">onE</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">range</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">GraphManager</span> <span style="color:#000">graph</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">client</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">graph</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">marko</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;marko&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">29</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">vadas</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;vadas&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">27</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Hongkong&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">lop</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;lop&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">328</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">josh</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;josh&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">32</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">ripple</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;ripple&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">199</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">peter</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;peter&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">35</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Shanghai&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">vadas</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;20160110&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">0</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">5</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;20130220&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">1</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">0</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;20171210&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">0</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">4</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;20091111&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">0</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">4</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">ripple</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;20171210&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">1</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">0</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">peter</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;20170324&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">0</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">2</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span>
</span></span></code></pre></div><p>顶点ID为:</p>
<pre tabindex="0"><code>&#34;2:ripple&#34;,
&#34;1:vadas&#34;,
&#34;1:peter&#34;,
&#34;1:josh&#34;,
&#34;1:marko&#34;,
&#34;2:lop&#34;
</code></pre><p>边ID为:</p>
<pre tabindex="0"><code>&#34;S1:peter&gt;2&gt;&gt;S2:lop&#34;,
&#34;S1:josh&gt;2&gt;&gt;S2:lop&#34;,
&#34;S1:josh&gt;2&gt;&gt;S2:ripple&#34;,
&#34;S1:marko&gt;1&gt;20130220&gt;S1:josh&#34;,
&#34;S1:marko&gt;1&gt;20160110&gt;S1:vadas&#34;,
&#34;S1:marko&gt;2&gt;&gt;S2:lop&#34;
</code></pre><h4 id="321-k-out-apiget基础版">3.2.1 K-out API(GET,基础版)</h4>
<h5 id="3211-功能介绍">3.2.1.1 功能介绍</h5>
<p>根据起始顶点、方向、边的类型(可选)和深度depth,查找从起始顶点出发恰好depth步可达的顶点</p>
<h6 id="params">Params</h6>
<ul>
<li>source:起始顶点id,必填项</li>
<li>direction:起始顶点向外发散的方向(OUT,IN,BOTH),选填项,默认是BOTH</li>
<li>max_depth:步数,必填项</li>
<li>label:边的类型,选填项,默认代表所有edge label</li>
<li>nearest:nearest为true时,代表起始顶点到达结果顶点的最短路径长度为depth,不存在更短的路径;nearest为false时,代表起始顶点到结果顶点有一条长度为depth的路径(未必最短且可以有环),选填项,默认为true</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,选填项,默认为10000</li>
<li>capacity:遍历过程中最大的访问的顶点数目,选填项,默认为10000000</li>
<li>limit:返回的顶点的最大数目,选填项,默认为10000000</li>
</ul>
<h5 id="3212-使用方法">3.2.1.2 使用方法</h5>
<h6 id="method--url">Method &amp; Url</h6>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/{graph}/traversers/kout?source=&#34;1:marko&#34;&amp;max_depth=2
</code></pre><h6 id="response-status">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:peter&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="3213-适用场景">3.2.1.3 适用场景</h5>
<p>查找恰好N步关系可达的顶点。两个例子:</p>
<ul>
<li>家族关系中,查找一个人的所有孙子,person A通过连续的两条“儿子”边到达的顶点集合。</li>
<li>社交关系中发现潜在好友,例如:与目标用户相隔两层朋友关系的用户,可以通过连续两条“朋友”边到达的顶点。</li>
</ul>
<h4 id="322-k-out-apipost高级版">3.2.2 K-out API(POST,高级版)</h4>
<h5 id="3221-功能介绍">3.2.2.1 功能介绍</h5>
<p>根据起始顶点、步骤(包括方向、边类型和过滤属性)和深度depth,查找从起始顶点出发恰好depth步可达的顶点。</p>
<blockquote>
<p>与K-out基础版的不同在于:</p>
<ul>
<li>支持只统计邻居数量</li>
<li>支持边属性过滤</li>
<li>支持返回到达邻居的最短路径</li>
</ul>
</blockquote>
<h6 id="params-1">Params</h6>
<ul>
<li>source:起始顶点id,必填项</li>
<li>从起始点出发的Step,必填项,结构如下:
<ul>
<li>direction:表示边的方向(OUT,IN,BOTH),默认是BOTH</li>
<li>labels:边的类型列表</li>
<li>properties:通过属性的值过滤边</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,默认为 10000 (注: 0.12版之前 step 内仅支持 degree 作为参数名, 0.12开始统一使用 max_degree, 并向下兼容 degree 写法)</li>
<li>skip_degree:用于设置查询过程中舍弃超级顶点的最小边数,即当某个顶点的邻接边数目大于 skip_degree 时,完全舍弃该顶点。选填项,如果开启时,需满足 <code>skip_degree &gt;= max_degree</code> 约束,默认为0 (不启用),表示不跳过任何点 (注意: 开启此配置后,遍历时会尝试访问一个顶点的 skip_degree 条边,而不仅仅是 max_degree 条边,这样有额外的遍历开销,对查询性能影响可能有较大影响,请确认理解后再开启)</li>
</ul>
</li>
<li>max_depth:步数,必填项</li>
<li>nearest:nearest为true时,代表起始顶点到达结果顶点的最短路径长度为depth,不存在更短的路径;nearest为false时,代表起始顶点到结果顶点有一条长度为depth的路径(未必最短且可以有环),选填项,默认为true</li>
<li>count_only:Boolean值,true表示只统计结果的数目,不返回具体结果;false表示返回具体的结果,默认为false</li>
<li>with_path:true表示返回起始点到每个邻居的最短路径,false表示不返回起始点到每个邻居的最短路径,选填项,默认为false</li>
<li>with_vertex,选填项,默认为false:
<ul>
<li>true表示返回结果包含完整的顶点信息(路径中的全部顶点)
<ul>
<li>with_path为true时,返回所有路径中的顶点的完整信息</li>
<li>with_path为false时,返回所有邻居的完整信息</li>
</ul>
</li>
<li>false时表示只返回顶点id</li>
</ul>
</li>
<li>capacity:遍历过程中最大的访问的顶点数目,选填项,默认为10000000</li>
<li>limit:返回的顶点的最大数目,选填项,默认为10000000</li>
</ul>
<h5 id="3222-使用方法">3.2.2.2 使用方法</h5>
<h6 id="method--url-1">Method &amp; Url</h6>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/{graph}/traversers/kout
</code></pre><h6 id="request-body">Request Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;step&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;direction&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;BOTH&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;labels&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;P.gt(0.1)&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max_degree&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">10000</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;skip_degree&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">100000</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max_depth&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;nearest&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;limit&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">10000</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;with_vertex&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;with_path&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h6 id="response-status-1">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-1">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;size&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">3</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;kout&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;paths&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:vadas&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">29</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">32</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">27</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Hongkong&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">328</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="3223-适用场景">3.2.2.3 适用场景</h5>
<p>参见3.2.1.3</p>
<h4 id="323-k-neighborget基础版">3.2.3 K-neighbor(GET,基础版)</h4>
<h5 id="3231-功能介绍">3.2.3.1 功能介绍</h5>
<p>根据起始顶点、方向、边的类型(可选)和深度depth,查找包括起始顶点在内、depth步之内可达的所有顶点</p>
<blockquote>
<p>相当于:起始顶点、K-out(1)、K-out(2)、&hellip; 、K-out(max_depth)的并集</p>
</blockquote>
<h6 id="params-2">Params</h6>
<ul>
<li>source: 起始顶点id,必填项</li>
<li>direction:起始顶点向外发散的方向(OUT,IN,BOTH),选填项,默认是BOTH</li>
<li>max_depth:步数,必填项</li>
<li>label:边的类型,选填项,默认代表所有edge label</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,选填项,默认为10000</li>
<li>limit:返回的顶点的最大数目,也即遍历过程中最大的访问的顶点数目,选填项,默认为10000000</li>
</ul>
<h5 id="3232-使用方法">3.2.3.2 使用方法</h5>
<h6 id="method--url-2">Method &amp; Url</h6>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/{graph}/traversers/kneighbor?source=“1:marko”&amp;max_depth=2
</code></pre><h6 id="response-status-2">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-2">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="3233-适用场景">3.2.3.3 适用场景</h5>
<p>查找N步以内可达的所有顶点,例如:</p>
<ul>
<li>家族关系中,查找一个人五服以内所有子孙,person A通过连续的5条“亲子”边到达的顶点集合。</li>
<li>社交关系中发现好友圈子,例如目标用户通过1条、2条、3条“朋友”边可到达的用户可以组成目标用户的朋友圈子</li>
</ul>
<h4 id="324-k-neighbor-apipost高级版">3.2.4 K-neighbor API(POST,高级版)</h4>
<h5 id="3241-功能介绍">3.2.4.1 功能介绍</h5>
<p>根据起始顶点、步骤(包括方向、边类型和过滤属性)和深度depth,查找从起始顶点出发depth步内可达的所有顶点。</p>
<blockquote>
<p>与K-neighbor基础版的不同在于:</p>
<ul>
<li>支持只统计邻居数量</li>
<li>支持边属性过滤</li>
<li>支持返回到达邻居的最短路径</li>
</ul>
</blockquote>
<h6 id="params-3">Params</h6>
<ul>
<li>source:起始顶点id,必填项</li>
<li>从起始点出发的Step,必填项,结构如下:
<ul>
<li>direction:表示边的方向(OUT,IN,BOTH),默认是BOTH</li>
<li>labels:边的类型列表</li>
<li>properties:通过属性的值过滤边</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,默认为 10000 (注: 0.12版之前 step 内仅支持 degree 作为参数名, 0.12开始统一使用 max_degree, 并向下兼容 degree 写法)</li>
<li>skip_degree:用于设置查询过程中舍弃超级顶点的最小边数,即当某个顶点的邻接边数目大于 skip_degree 时,完全舍弃该顶点。选填项,如果开启时,需满足 <code>skip_degree &gt;= max_degree</code> 约束,默认为0 (不启用),表示不跳过任何点 (注意: 开启此配置后,遍历时会尝试访问一个顶点的 skip_degree 条边,而不仅仅是 max_degree 条边,这样有额外的遍历开销,对查询性能影响可能有较大影响,请确认理解后再开启)</li>
</ul>
</li>
<li>max_depth:步数,必填项</li>
<li>count_only:Boolean值,true表示只统计结果的数目,不返回具体结果;false表示返回具体的结果,默认为false</li>
<li>with_path:true表示返回起始点到每个邻居的最短路径,false表示不返回起始点到每个邻居的最短路径,选填项,默认为false</li>
<li>with_vertex,选填项,默认为false:
<ul>
<li>true表示返回结果包含完整的顶点信息(路径中的全部顶点)
<ul>
<li>with_path为true时,返回所有路径中的顶点的完整信息</li>
<li>with_path为false时,返回所有邻居的完整信息</li>
</ul>
</li>
<li>false时表示只返回顶点id</li>
</ul>
</li>
<li>limit:返回的顶点的最大数目,选填项,默认为10000000</li>
</ul>
<h5 id="3242-使用方法">3.2.4.2 使用方法</h5>
<h6 id="method--url-3">Method &amp; Url</h6>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/{graph}/traversers/kneighbor
</code></pre><h6 id="request-body-1">Request Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;step&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;direction&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;BOTH&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;labels&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;P.gt(0.1)&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max_degree&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">10000</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;skip_degree&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">100000</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max_depth&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">3</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;limit&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">10000</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;with_vertex&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;with_path&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h6 id="response-status-3">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-3">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;size&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">6</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;kneighbor&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;paths&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:vadas&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:peter&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">199</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">29</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">32</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">27</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Hongkong&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">35</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Shanghai&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">328</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="3243-适用场景">3.2.4.3 适用场景</h5>
<p>参见3.2.3.3</p>
<h4 id="325-same-neighbors">3.2.5 Same Neighbors</h4>
<h5 id="3251-功能介绍">3.2.5.1 功能介绍</h5>
<p>查询两个点的共同邻居</p>
<h6 id="params-4">Params</h6>
<ul>
<li>vertex:一个顶点id,必填项</li>
<li>other:另一个顶点id,必填项</li>
<li>direction:顶点向外发散的方向(OUT,IN,BOTH),选填项,默认是BOTH</li>
<li>label:边的类型,选填项,默认代表所有edge label</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,选填项,默认为10000</li>
<li>limit:返回的共同邻居的最大数目,选填项,默认为10000000</li>
</ul>
<h5 id="3252-使用方法">3.2.5.2 使用方法</h5>
<h6 id="method--url-4">Method &amp; Url</h6>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/{graph}/traversers/sameneighbors?vertex=“1:marko”&amp;other=&#34;1:josh&#34;
</code></pre><h6 id="response-status-4">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-4">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;same_neighbors&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="3253-适用场景">3.2.5.3 适用场景</h5>
<p>查找两个顶点的共同邻居:</p>
<ul>
<li>社交关系中发现两个用户的共同粉丝或者共同关注用户</li>
</ul>
<h4 id="326-jaccard-similarityget">3.2.6 Jaccard Similarity(GET)</h4>
<h5 id="3261-功能介绍">3.2.6.1 功能介绍</h5>
<p>计算两个顶点的jaccard similarity(两个顶点邻居的交集比上两个顶点邻居的并集)</p>
<h6 id="params-5">Params</h6>
<ul>
<li>vertex:一个顶点id,必填项</li>
<li>other:另一个顶点id,必填项</li>
<li>direction:顶点向外发散的方向(OUT,IN,BOTH),选填项,默认是BOTH</li>
<li>label:边的类型,选填项,默认代表所有edge label</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,选填项,默认为10000</li>
</ul>
<h5 id="3262-使用方法">3.2.6.2 使用方法</h5>
<h6 id="method--url-5">Method &amp; Url</h6>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/{graph}/traversers/jaccardsimilarity?vertex=&#34;1:marko&#34;&amp;other=&#34;1:josh&#34;
</code></pre><h6 id="response-status-5">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-5">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;jaccard_similarity&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.2</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="3263-适用场景">3.2.6.3 适用场景</h5>
<p>用于评估两个点的相似性或者紧密度</p>
<h4 id="327-jaccard-similaritypost">3.2.7 Jaccard Similarity(POST)</h4>
<h5 id="3271-功能介绍">3.2.7.1 功能介绍</h5>
<p>计算与指定顶点的jaccard similarity最大的N个点</p>
<blockquote>
<p>jaccard similarity的计算方式为:两个顶点邻居的交集比上两个顶点邻居的并集</p>
</blockquote>
<h6 id="params-6">Params</h6>
<ul>
<li>vertex:一个顶点id,必填项</li>
<li>从起始点出发的Step,必填项,结构如下:
<ul>
<li>direction:表示边的方向(OUT,IN,BOTH),默认是BOTH</li>
<li>labels:边的类型列表</li>
<li>properties:通过属性的值过滤边</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,默认为 10000 (注: 0.12版之前 step 内仅支持 degree 作为参数名, 0.12开始统一使用 max_degree, 并向下兼容 degree 写法)</li>
<li>skip_degree:用于设置查询过程中舍弃超级顶点的最小边数,即当某个顶点的邻接边数目大于 skip_degree 时,完全舍弃该顶点。选填项,如果开启时,需满足 <code>skip_degree &gt;= max_degree</code> 约束,默认为0 (不启用),表示不跳过任何点 (注意: 开启此配置后,遍历时会尝试访问一个顶点的 skip_degree 条边,而不仅仅是 max_degree 条边,这样有额外的遍历开销,对查询性能影响可能有较大影响,请确认理解后再开启)</li>
</ul>
</li>
<li>top:返回一个起点的jaccard similarity中最大的top个,选填项,默认为100</li>
<li>capacity:遍历过程中最大的访问的顶点数目,选填项,默认为10000000</li>
</ul>
<h5 id="3272-使用方法">3.2.7.2 使用方法</h5>
<h6 id="method--url-6">Method &amp; Url</h6>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/{graph}/traversers/jaccardsimilarity
</code></pre><h6 id="request-body-2">Request Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;step&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;direction&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;BOTH&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;labels&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max_degree&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">10000</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;skip_degree&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">100000</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;top&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">3</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h6 id="response-status-6">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-6">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.3333333333333333</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;1:peter&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.3333333333333333</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.2</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="3273-适用场景">3.2.7.3 适用场景</h5>
<p>用于在图中找出与指定顶点相似性最高的顶点</p>
<h4 id="328-shortest-path">3.2.8 Shortest Path</h4>
<h5 id="3281-功能介绍">3.2.8.1 功能介绍</h5>
<p>根据起始顶点、目的顶点、方向、边的类型(可选)和最大深度,查找一条最短路径</p>
<h6 id="params-7">Params</h6>
<ul>
<li>source:起始顶点id,必填项</li>
<li>target:目的顶点id,必填项</li>
<li>direction:起始顶点向外发散的方向(OUT,IN,BOTH),选填项,默认是BOTH</li>
<li>max_depth:最大步数,必填项</li>
<li>label:边的类型,选填项,默认代表所有edge label</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,选填项,默认为10000</li>
<li>skip_degree:用于设置查询过程中舍弃超级顶点的最小边数,即当某个顶点的邻接边数目大于 skip_degree 时,完全舍弃该顶点。选填项,如果开启时,需满足 <code>skip_degree &gt;= max_degree</code> 约束,默认为0 (不启用),表示不跳过任何点 (注意: 开启此配置后,遍历时会尝试访问一个顶点的 skip_degree 条边,而不仅仅是 max_degree 条边,这样有额外的遍历开销,对查询性能影响可能有较大影响,请确认理解后再开启)</li>
<li>capacity:遍历过程中最大的访问的顶点数目,选填项,默认为10000000</li>
</ul>
<h5 id="3282-使用方法">3.2.8.2 使用方法</h5>
<h6 id="method--url-7">Method &amp; Url</h6>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/{graph}/traversers/shortestpath?source=&#34;1:marko&#34;&amp;target=&#34;2:ripple&#34;&amp;max_depth=3
</code></pre><h6 id="response-status-7">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-7">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;path&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="3283-适用场景">3.2.8.3 适用场景</h5>
<p>查找两个顶点间的最短路径,例如:</p>
<ul>
<li>社交关系网中,查找两个用户有关系的最短路径,即最近的朋友关系链</li>
<li>设备关联网络中,查找两个设备最短的关联关系</li>
</ul>
<h4 id="329-all-shortest-paths">3.2.9 All Shortest Paths</h4>
<h5 id="3291-功能介绍">3.2.9.1 功能介绍</h5>
<p>根据起始顶点、目的顶点、方向、边的类型(可选)和最大深度,查找两点间所有的最短路径</p>
<h6 id="params-8">Params</h6>
<ul>
<li>source:起始顶点id,必填项</li>
<li>target:目的顶点id,必填项</li>
<li>direction:起始顶点向外发散的方向(OUT,IN,BOTH),选填项,默认是BOTH</li>
<li>max_depth:最大步数,必填项</li>
<li>label:边的类型,选填项,默认代表所有edge label</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,选填项,默认为10000</li>
<li>skip_degree:用于设置查询过程中舍弃超级顶点的最小边数,即当某个顶点的邻接边数目大于 skip_degree 时,完全舍弃该顶点。选填项,如果开启时,需满足 <code>skip_degree &gt;= max_degree</code> 约束,默认为0 (不启用),表示不跳过任何点 (注意: 开启此配置后,遍历时会尝试访问一个顶点的 skip_degree 条边,而不仅仅是 max_degree 条边,这样有额外的遍历开销,对查询性能影响可能有较大影响,请确认理解后再开启)</li>
<li>capacity:遍历过程中最大的访问的顶点数目,选填项,默认为10000000</li>
</ul>
<h5 id="3292-使用方法">3.2.9.2 使用方法</h5>
<h6 id="method--url-8">Method &amp; Url</h6>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/{graph}/traversers/allshortestpaths?source=&#34;A&#34;&amp;target=&#34;Z&#34;&amp;max_depth=10
</code></pre><h6 id="response-status-8">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-8">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;paths&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;A&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;B&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;C&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;Z&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;A&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;M&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;N&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;Z&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="3293-适用场景">3.2.9.3 适用场景</h5>
<p>查找两个顶点间的所有最短路径,例如:</p>
<ul>
<li>社交关系网中,查找两个用户有关系的全部最短路径,即最近的朋友关系链</li>
<li>设备关联网络中,查找两个设备全部的最短关联关系</li>
</ul>
<h4 id="3210-weighted-shortest-path">3.2.10 Weighted Shortest Path</h4>
<h5 id="32101-功能介绍">3.2.10.1 功能介绍</h5>
<p>根据起始顶点、目的顶点、方向、边的类型(可选)和最大深度,查找一条带权最短路径</p>
<h6 id="params-9">Params</h6>
<ul>
<li>source:起始顶点id,必填项</li>
<li>target:目的顶点id,必填项</li>
<li>direction:起始顶点向外发散的方向(OUT,IN,BOTH),选填项,默认是BOTH</li>
<li>label:边的类型,选填项,默认代表所有edge label</li>
<li>weight:边的权重属性,必填项,必须是数字类型的属性</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,选填项,默认为10000</li>
<li>skip_degree:用于设置查询过程中舍弃超级顶点的最小边数,即当某个顶点的邻接边数目大于 skip_degree 时,完全舍弃该顶点。选填项,如果开启时,需满足 <code>skip_degree &gt;= max_degree</code> 约束,默认为0 (不启用),表示不跳过任何点 (注意: 开启此配置后,遍历时会尝试访问一个顶点的 skip_degree 条边,而不仅仅是 max_degree 条边,这样有额外的遍历开销,对查询性能影响可能有较大影响,请确认理解后再开启)</li>
<li>capacity:遍历过程中最大的访问的顶点数目,选填项,默认为10000000</li>
<li>with_vertex:true表示返回结果包含完整的顶点信息(路径中的全部顶点),false时表示只返回顶点id,选填项,默认为false</li>
</ul>
<h5 id="32102-使用方法">3.2.10.2 使用方法</h5>
<h6 id="method--url-9">Method &amp; Url</h6>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/{graph}/traversers/weightedshortestpath?source=&#34;1:marko&#34;&amp;target=&#34;2:ripple&#34;&amp;weight=&#34;weight&#34;&amp;with_vertex=true
</code></pre><h6 id="response-status-9">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-9">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;path&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2.0</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">29</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">32</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">199</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="32103-适用场景">3.2.10.3 适用场景</h5>
<p>查找两个顶点间的带权最短路径,例如:</p>
<ul>
<li>交通线路中查找从A城市到B城市花钱最少的交通方式</li>
</ul>
<h4 id="3211-single-source-shortest-path">3.2.11 Single Source Shortest Path</h4>
<h5 id="32111-功能介绍">3.2.11.1 功能介绍</h5>
<p>从一个顶点出发,查找该点到图中其他顶点的最短路径(可选是否带权重)</p>
<h6 id="params-10">Params</h6>
<ul>
<li>source:起始顶点id,必填项</li>
<li>direction:起始顶点向外发散的方向(OUT,IN,BOTH),选填项,默认是BOTH</li>
<li>label:边的类型,选填项,默认代表所有edge label</li>
<li>weight:边的权重属性,选填项,必须是数字类型的属性,如果不填或者虽然填了但是边没有该属性,则权重为1.0</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,选填项,默认为10000</li>
<li>skip_degree:用于设置查询过程中舍弃超级顶点的最小边数,即当某个顶点的邻接边数目大于 skip_degree 时,完全舍弃该顶点。选填项,如果开启时,需满足 <code>skip_degree &gt;= max_degree</code> 约束,默认为0 (不启用),表示不跳过任何点 (注意: 开启此配置后,遍历时会尝试访问一个顶点的 skip_degree 条边,而不仅仅是 max_degree 条边,这样有额外的遍历开销,对查询性能影响可能有较大影响,请确认理解后再开启)</li>
<li>capacity:遍历过程中最大的访问的顶点数目,选填项,默认为10000000</li>
<li>limit:查询到的目标顶点个数,也是返回的最短路径的条数,选填项,默认为10</li>
<li>with_vertex:true表示返回结果包含完整的顶点信息(路径中的全部顶点),false时表示只返回顶点id,选填项,默认为false</li>
</ul>
<h5 id="32112-使用方法">3.2.11.2 使用方法</h5>
<h6 id="method--url-10">Method &amp; Url</h6>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/{graph}/traversers/singlesourceshortestpath?source=&#34;1:marko&#34;&amp;with_vertex=true
</code></pre><h6 id="response-status-10">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-10">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;paths&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2.0</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1.0</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;1:vadas&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1.0</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:vadas&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;1:peter&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2.0</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:peter&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1.0</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">199</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">29</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">32</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">27</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Hongkong&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">35</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Shanghai&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">328</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="32113-适用场景">3.2.11.3 适用场景</h5>
<p>查找从一个点出发到其他顶点的带权最短路径,比如:</p>
<ul>
<li>查找从北京出发到全国其他所有城市的耗时最短的乘车方案</li>
</ul>
<h4 id="3212-multi-node-shortest-path">3.2.12 Multi Node Shortest Path</h4>
<h5 id="32121-功能介绍">3.2.12.1 功能介绍</h5>
<p>查找指定顶点集两两之间的最短路径</p>
<h6 id="params-11">Params</h6>
<ul>
<li>vertices:定义起始顶点,必填项,指定方式包括:
<ul>
<li>ids:通过顶点id列表提供起始顶点</li>
<li>label和properties:如果没有指定ids,则使用label和properties的联合条件查询起始顶点
<ul>
<li>label:顶点的类型</li>
<li>properties:通过属性的值查询起始顶点</li>
</ul>
<blockquote>
<p>注意:properties中的属性值可以是列表,表示只要key对应的value在列表中就可以</p>
</blockquote>
</li>
</ul>
</li>
<li>step:表示从起始顶点到终止顶点走过的路径,必填项,Step的结构如下:
<ul>
<li>direction:表示边的方向(OUT,IN,BOTH),默认是BOTH</li>
<li>labels:边的类型列表</li>
<li>properties:通过属性的值过滤边</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,默认为 10000 (注: 0.12版之前 step 内仅支持 degree 作为参数名, 0.12开始统一使用 max_degree, 并向下兼容 degree 写法)</li>
<li>skip_degree:用于设置查询过程中舍弃超级顶点的最小边数,即当某个顶点的邻接边数目大于 skip_degree 时,完全舍弃该顶点。选填项,如果开启时,需满足 <code>skip_degree &gt;= max_degree</code> 约束,默认为0 (不启用),表示不跳过任何点 (注意: 开启此配置后,遍历时会尝试访问一个顶点的 skip_degree 条边,而不仅仅是 max_degree 条边,这样有额外的遍历开销,对查询性能影响可能有较大影响,请确认理解后再开启)</li>
</ul>
</li>
<li>max_depth:步数,必填项</li>
<li>capacity:遍历过程中最大的访问的顶点数目,选填项,默认为10000000</li>
<li>with_vertex:true表示返回结果包含完整的顶点信息(路径中的全部顶点),false时表示只返回顶点id,选填项,默认为false</li>
</ul>
<h5 id="32122-使用方法">3.2.12.2 使用方法</h5>
<h6 id="method--url-11">Method &amp; Url</h6>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/{graph}/traversers/multinodeshortestpath
</code></pre><h6 id="request-body-3">Request Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ids&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;382:marko&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;382:josh&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;382:vadas&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;382:peter&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;383:lop&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;383:ripple&#34;</span><span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;step&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;direction&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;BOTH&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max_depth&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">10</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;capacity&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">100000000</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;with_vertex&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h6 id="response-status-11">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-11">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;paths&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;383:lop&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;383:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:marko&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;383:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:josh&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;383:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:vadas&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;383:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:marko&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;383:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:josh&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;383:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:vadas&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;383:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;383:ripple&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:josh&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;383:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;383:ripple&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:vadas&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;383:ripple&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;383:ripple&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:vadas&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;382:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;383:ripple&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;382:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">29</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Shanghai&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;383:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">328</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;382:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">29</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;382:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">32</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;382:vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">27</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Hongkong&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;383:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">199</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="32123-适用场景">3.2.12.3 适用场景</h5>
<p>查找多个点之间的最短路径,比如:</p>
<ul>
<li>查找多个公司和法人之间的最短路径</li>
</ul>
<h4 id="3213-paths-get基础版">3.2.13 Paths (GET,基础版)</h4>
<h5 id="32131-功能介绍">3.2.13.1 功能介绍</h5>
<p>根据起始顶点、目的顶点、方向、边的类型(可选)和最大深度等条件查找所有路径</p>
<h6 id="params-12">Params</h6>
<ul>
<li>source:起始顶点id,必填项</li>
<li>target:目的顶点id,必填项</li>
<li>direction:起始顶点向外发散的方向(OUT,IN,BOTH),选填项,默认是BOTH</li>
<li>label:边的类型,选填项,默认代表所有edge label</li>
<li>max_depth:步数,必填项</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,选填项,默认为10000</li>
<li>capacity:遍历过程中最大的访问的顶点数目,选填项,默认为10000000</li>
<li>limit:返回的路径的最大数目,选填项,默认为10</li>
</ul>
<h5 id="32132-使用方法">3.2.13.2 使用方法</h5>
<h6 id="method--url-12">Method &amp; Url</h6>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/{graph}/traversers/paths?source=&#34;1:marko&#34;&amp;target=&#34;1:josh&#34;&amp;max_depth=5
</code></pre><h6 id="response-status-12">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-12">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;paths&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="32133-适用场景">3.2.13.3 适用场景</h5>
<p>查找两个顶点间的所有路径,例如:</p>
<ul>
<li>社交网络中,查找两个用户所有可能的关系路径</li>
<li>设备关联网络中,查找两个设备之间所有的关联路径</li>
</ul>
<h4 id="3214-paths-post高级版">3.2.14 Paths (POST,高级版)</h4>
<h5 id="32141-功能介绍">3.2.14.1 功能介绍</h5>
<p>根据起始顶点、目的顶点、步骤(step)和最大深度等条件查找所有路径</p>
<h6 id="params-13">Params</h6>
<ul>
<li>sources:定义起始顶点,必填项,指定方式包括:
<ul>
<li>ids:通过顶点id列表提供起始顶点</li>
<li>label和properties:如果没有指定ids,则使用label和properties的联合条件查询起始顶点
<ul>
<li>label:顶点的类型</li>
<li>properties:通过属性的值查询起始顶点</li>
</ul>
<blockquote>
<p>注意:properties中的属性值可以是列表,表示只要key对应的value在列表中就可以</p>
</blockquote>
</li>
</ul>
</li>
<li>targets:定义终止顶点,必填项,指定方式包括:
<ul>
<li>ids:通过顶点id列表提供终止顶点</li>
<li>label和properties:如果没有指定ids,则使用label和properties的联合条件查询终止顶点
<ul>
<li>label:顶点的类型</li>
<li>properties:通过属性的值查询终止顶点</li>
</ul>
<blockquote>
<p>注意:properties中的属性值可以是列表,表示只要key对应的value在列表中就可以</p>
</blockquote>
</li>
</ul>
</li>
<li>step:表示从起始顶点到终止顶点走过的路径,必填项,Step的结构如下:
<ul>
<li>direction:表示边的方向(OUT,IN,BOTH),默认是BOTH</li>
<li>labels:边的类型列表</li>
<li>properties:通过属性的值过滤边</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,默认为 10000 (注: 0.12版之前 step 内仅支持 degree 作为参数名, 0.12开始统一使用 max_degree, 并向下兼容 degree 写法)</li>
<li>skip_degree:用于设置查询过程中舍弃超级顶点的最小边数,即当某个顶点的邻接边数目大于 skip_degree 时,完全舍弃该顶点。选填项,如果开启时,需满足 <code>skip_degree &gt;= max_degree</code> 约束,默认为0 (不启用),表示不跳过任何点 (注意: 开启此配置后,遍历时会尝试访问一个顶点的 skip_degree 条边,而不仅仅是 max_degree 条边,这样有额外的遍历开销,对查询性能影响可能有较大影响,请确认理解后再开启)</li>
</ul>
</li>
<li>max_depth:步数,必填项</li>
<li>nearest:nearest为true时,代表起始顶点到达结果顶点的最短路径长度为depth,不存在更短的路径;nearest为false时,代表起始顶点到结果顶点有一条长度为depth的路径(未必最短且可以有环),选填项,默认为true</li>
<li>capacity:遍历过程中最大的访问的顶点数目,选填项,默认为10000000</li>
<li>limit:返回的路径的最大数目,选填项,默认为10</li>
<li>with_vertex:true表示返回结果包含完整的顶点信息(路径中的全部顶点),false时表示只返回顶点id,选填项,默认为false</li>
</ul>
<h5 id="32142-使用方法">3.2.14.2 使用方法</h5>
<h6 id="method--url-13">Method &amp; Url</h6>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/{graph}/traversers/paths
</code></pre><h6 id="request-body-4">Request Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&#34;sources&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ids&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&#34;targets&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ids&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;1:peter&#34;</span><span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&#34;step&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&#34;direction&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;BOTH&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;P.gt(0.01)&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&#34;max_depth&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">10</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&#34;capacity&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">100000000</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&#34;limit&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">10000000</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&#34;with_vertex&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">false</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h6 id="response-status-13">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-13">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;paths&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:peter&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:peter&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="32143-适用场景">3.2.14.3 适用场景</h5>
<p>查找两个顶点间的所有路径,例如:</p>
<ul>
<li>社交网络中,查找两个用户所有可能的关系路径</li>
<li>设备关联网络中,查找两个设备之间所有的关联路径</li>
</ul>
<h4 id="3215-customized-paths">3.2.15 Customized Paths</h4>
<h5 id="32151-功能介绍">3.2.15.1 功能介绍</h5>
<p>根据一批起始顶点、边规则(包括方向、边的类型和属性过滤)和最大深度等条件查找符合条件的所有的路径</p>
<h6 id="params-14">Params</h6>
<ul>
<li>sources:定义起始顶点,必填项,指定方式包括:
<ul>
<li>ids:通过顶点id列表提供起始顶点</li>
<li>label和properties:如果没有指定ids,则使用label和properties的联合条件查询起始顶点
<ul>
<li>label:顶点的类型</li>
<li>properties:通过属性的值查询起始顶点</li>
</ul>
<blockquote>
<p>注意:properties中的属性值可以是列表,表示只要key对应的value在列表中就可以</p>
</blockquote>
</li>
</ul>
</li>
<li>steps:表示从起始顶点走过的路径规则,是一组Step的列表。必填项。每个Step的结构如下:
<ul>
<li>direction:表示边的方向(OUT,IN,BOTH),默认是BOTH</li>
<li>labels:边的类型列表</li>
<li>properties:通过属性的值过滤边</li>
<li>weight_by:根据指定的属性计算边的权重,sort_by不为NONE时有效,与default_weight互斥</li>
<li>default_weight:当边没有属性作为权重计算值时,采取的默认权重,sort_by不为NONE时有效,与weight_by互斥</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,默认为 10000 (注: 0.12版之前 step 内仅支持 degree 作为参数名, 0.12开始统一使用 max_degree, 并向下兼容 degree 写法)</li>
<li>sample:当需要对某个step的符合条件的边进行采样时设置,-1表示不采样,默认为采样100</li>
</ul>
</li>
<li>sort_by:根据路径的权重排序,选填项,默认为NONE:
<ul>
<li>NONE表示不排序,默认值</li>
<li>INCR表示按照路径权重的升序排序</li>
<li>DECR表示按照路径权重的降序排序</li>
</ul>
</li>
<li>capacity:遍历过程中最大的访问的顶点数目,选填项,默认为10000000</li>
<li>limit:返回的路径的最大数目,选填项,默认为10</li>
<li>with_vertex:true表示返回结果包含完整的顶点信息(路径中的全部顶点),false时表示只返回顶点id,选填项,默认为false</li>
</ul>
<h5 id="32152-使用方法">3.2.15.2 使用方法</h5>
<h6 id="method--url-14">Method &amp; Url</h6>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/{graph}/traversers/customizedpaths
</code></pre><h6 id="request-body-5">Request Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;sources&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ids&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;marko&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;steps&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;direction&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;OUT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;labels&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;knows&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight_by&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max_degree&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">-1</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;direction&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;OUT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;labels&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;created&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;default_weight&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">8</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max_degree&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">-1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;sample&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;sort_by&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;INCR&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;with_vertex&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;capacity&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">-1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;limit&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">-1</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h6 id="response-status-14">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-14">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;paths&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weights&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#0000cf;font-weight:bold">8</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:marko&gt;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:marko&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;marko&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:marko&gt;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">29</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&gt;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;josh&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&gt;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">32</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&gt;price&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">328</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;lop&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&gt;lang&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;java&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="32153-适用场景">3.2.15.3 适用场景</h5>
<p>适合查找各种复杂的路径集合,例如:</p>
<ul>
<li>社交网络中,查找看过张艺谋所导演的电影的用户关注的大V的路径(张艺谋&mdash;&gt;电影&mdash;-&gt;用户&mdash;&gt;大V)</li>
<li>风控网络中,查找多个高风险用户的直系亲属的朋友的路径(高风险用户&mdash;&gt;直系亲属&mdash;&gt;朋友)</li>
</ul>
<h4 id="3216-template-paths">3.2.16 Template Paths</h4>
<h5 id="32161-功能介绍">3.2.16.1 功能介绍</h5>
<p>根据一批起始顶点、边规则(包括方向、边的类型和属性过滤)和最大深度等条件查找符合条件的所有的路径</p>
<h6 id="params-15">Params</h6>
<ul>
<li>sources:定义起始顶点,必填项,指定方式包括:
<ul>
<li>ids:通过顶点id列表提供起始顶点</li>
<li>label和properties:如果没有指定ids,则使用label和properties的联合条件查询起始顶点
<ul>
<li>label:顶点的类型</li>
<li>properties:通过属性的值查询起始顶点</li>
</ul>
<blockquote>
<p>注意:properties中的属性值可以是列表,表示只要key对应的value在列表中就可以</p>
</blockquote>
</li>
</ul>
</li>
<li>targets:定义终止顶点,必填项,指定方式包括:
<ul>
<li>ids:通过顶点id列表提供终止顶点</li>
<li>label和properties:如果没有指定ids,则使用label和properties的联合条件查询终止顶点
<ul>
<li>label:顶点的类型</li>
<li>properties:通过属性的值查询终止顶点</li>
</ul>
<blockquote>
<p>注意:properties中的属性值可以是列表,表示只要key对应的value在列表中就可以</p>
</blockquote>
</li>
</ul>
</li>
<li>steps:表示从起始顶点走过的路径规则,是一组Step的列表。必填项。每个Step的结构如下:
<ul>
<li>direction:表示边的方向(OUT,IN,BOTH),默认是BOTH</li>
<li>labels:边的类型列表</li>
<li>properties:通过属性的值过滤边</li>
<li>max_times:当前step可以重复的次数,当为N时,表示从起始顶点可以经过当前step 1-N 次</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,默认为 10000 (注: 0.12版之前 step 内仅支持 degree 作为参数名, 0.12开始统一使用 max_degree, 并向下兼容 degree 写法)</li>
<li>skip_degree:用于设置查询过程中舍弃超级顶点的最小边数,即当某个顶点的邻接边数目大于 skip_degree 时,完全舍弃该顶点。选填项,如果开启时,需满足 <code>skip_degree &gt;= max_degree</code> 约束,默认为0 (不启用),表示不跳过任何点 (注意: 开启此配置后,遍历时会尝试访问一个顶点的 skip_degree 条边,而不仅仅是 max_degree 条边,这样有额外的遍历开销,对查询性能影响可能有较大影响,请确认理解后再开启)</li>
</ul>
</li>
<li>with_ring:Boolean值,true表示包含环路;false表示不包含环路,默认为false</li>
<li>capacity:遍历过程中最大的访问的顶点数目,选填项,默认为10000000</li>
<li>limit:返回的路径的最大数目,选填项,默认为10</li>
<li>with_vertex:true表示返回结果包含完整的顶点信息(路径中的全部顶点),false时表示只返回顶点id,选填项,默认为false</li>
</ul>
<h5 id="32162-使用方法">3.2.16.2 使用方法</h5>
<h6 id="method--url-15">Method &amp; Url</h6>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/{graph}/traversers/templatepaths
</code></pre><h6 id="request-body-6">Request Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;sources&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ids&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vadas&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;targets&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ids&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;ripple&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;steps&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;direction&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;IN&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;labels&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max_degree&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">10000</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;skip_degree&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">100000</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;direction&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;OUT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;labels&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max_degree&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">10000</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;skip_degree&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">100000</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;direction&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;IN&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;labels&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max_degree&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">10000</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;skip_degree&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">100000</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;direction&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;OUT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;labels&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max_degree&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">10000</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;skip_degree&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">100000</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;capacity&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">10000</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;limit&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">10</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;with_vertex&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h6 id="response-status-15">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-15">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;paths&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">199</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">29</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">32</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">27</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Hongkong&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">328</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="32163-适用场景">3.2.16.3 适用场景</h5>
<p>适合查找各种复杂的模板路径,比如personA -(朋友)-&gt; personB -(同学)-&gt; personC,其中&quot;朋友&quot;和&quot;同学&quot;边可以分别是最多3层和4层的情况</p>
<h4 id="3217-crosspoints">3.2.17 Crosspoints</h4>
<h5 id="32171-功能介绍">3.2.17.1 功能介绍</h5>
<p>根据起始顶点、目的顶点、方向、边的类型(可选)和最大深度等条件查找相交点</p>
<h6 id="params-16">Params</h6>
<ul>
<li>source:起始顶点id,必填项</li>
<li>target:目的顶点id,必填项</li>
<li>direction:起始顶点到目的顶点的方向, 目的点到起始点是反方向,BOTH时不考虑方向(OUT,IN,BOTH),选填项,默认是BOTH</li>
<li>label:边的类型,选填项,默认代表所有edge label</li>
<li>max_depth:步数,必填项</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,选填项,默认为10000</li>
<li>capacity:遍历过程中最大的访问的顶点数目,选填项,默认为10000000</li>
<li>limit:返回的交点的最大数目,选填项,默认为10</li>
</ul>
<h5 id="32172-使用方法">3.2.17.2 使用方法</h5>
<h6 id="method--url-16">Method &amp; Url</h6>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/{graph}/traversers/crosspoints?source=&#34;2:lop&#34;&amp;target=&#34;2:ripple&#34;&amp;max_depth=5&amp;direction=IN
</code></pre><h6 id="response-status-16">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-16">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;crosspoints&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;crosspoint&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="32173-适用场景">3.2.17.3 适用场景</h5>
<p>查找两个顶点的交点及其路径,例如:</p>
<ul>
<li>社交网络中,查找两个用户共同关注的话题或者大V</li>
<li>家族关系中,查找共同的祖先</li>
</ul>
<h4 id="3218-customized-crosspoints">3.2.18 Customized Crosspoints</h4>
<h5 id="32181-功能介绍">3.2.18.1 功能介绍</h5>
<p>根据一批起始顶点、多种边规则(包括方向、边的类型和属性过滤)和最大深度等条件查找符合条件的所有的路径终点的交集</p>
<h6 id="params-17">Params</h6>
<ul>
<li>
<p>sources:定义起始顶点,必填项,指定方式包括:</p>
<ul>
<li>ids:通过顶点id列表提供起始顶点</li>
<li>label和properties:如果没有指定ids,则使用label和properties的联合条件查询起始顶点
<ul>
<li>label:顶点的类型</li>
<li>properties:通过属性的值查询起始顶点</li>
</ul>
<blockquote>
<p>注意:properties中的属性值可以是列表,表示只要key对应的value在列表中就可以</p>
</blockquote>
</li>
</ul>
</li>
<li>
<p>path_patterns:表示从起始顶点走过的路径规则,是一组规则的列表。必填项。每个规则是一个PathPattern</p>
<ul>
<li>每个PathPattern是一组Step列表,每个Step结构如下:
<ul>
<li>direction:表示边的方向(OUT,IN,BOTH),默认是BOTH</li>
<li>labels:边的类型列表</li>
<li>properties:通过属性的值过滤边</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,默认为 10000 (注: 0.12版之前 step 内仅支持 degree 作为参数名, 0.12开始统一使用 max_degree, 并向下兼容 degree 写法)</li>
<li>skip_degree:用于设置查询过程中舍弃超级顶点的最小边数,即当某个顶点的邻接边数目大于 skip_degree 时,完全舍弃该顶点。选填项,如果开启时,需满足 <code>skip_degree &gt;= max_degree</code> 约束,默认为0 (不启用),表示不跳过任何点 (注意: 开启此配置后,遍历时会尝试访问一个顶点的 skip_degree 条边,而不仅仅是 max_degree 条边,这样有额外的遍历开销,对查询性能影响可能有较大影响,请确认理解后再开启)</li>
</ul>
</li>
</ul>
</li>
<li>
<p>capacity:遍历过程中最大的访问的顶点数目,选填项,默认为10000000</p>
</li>
<li>
<p>limit:返回的路径的最大数目,选填项,默认为10</p>
</li>
<li>
<p>with_path:true表示返回交点所在的路径,false表示不返回交点所在的路径,选填项,默认为false</p>
</li>
<li>
<p>with_vertex,选填项,默认为false:</p>
<ul>
<li>true表示返回结果包含完整的顶点信息(路径中的全部顶点)
<ul>
<li>with_path为true时,返回所有路径中的顶点的完整信息</li>
<li>with_path为false时,返回所有交点的完整信息</li>
</ul>
</li>
<li>false时表示只返回顶点id</li>
</ul>
</li>
</ul>
<h5 id="32182-使用方法">3.2.18.2 使用方法</h5>
<h6 id="method--url-17">Method &amp; Url</h6>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/{graph}/traversers/customizedcrosspoints
</code></pre><h6 id="request-body-7">Request Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;sources&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ids&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;path_patterns&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;steps&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;direction&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;IN&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;labels&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;created&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max_degree&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">-1</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;with_path&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;with_vertex&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;capacity&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">-1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;limit&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">-1</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h6 id="response-status-17">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-17">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;crosspoints&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;paths&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:ripple&gt;price&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">199</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:ripple&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;ripple&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:ripple&gt;lang&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;java&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&gt;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;josh&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&gt;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">32</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&gt;price&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">328</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;lop&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&gt;lang&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;java&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="32183-适用场景">3.2.18.3 适用场景</h5>
<p>查询一组顶点通过多种路径在终点有交集的情况。例如:</p>
<ul>
<li>在商品图谱中,多款手机、学习机、游戏机通过不同的低级别的类目路径,最终都属于一级类目的电子设备</li>
</ul>
<h4 id="3219-rings">3.2.19 Rings</h4>
<h5 id="32191-功能介绍">3.2.19.1 功能介绍</h5>
<p>根据起始顶点、方向、边的类型(可选)和最大深度等条件查找可达的环路</p>
<p>例如:1 -&gt; 25 -&gt; 775 -&gt; 14690 -&gt; 25, 其中环路为 25 -&gt; 775 -&gt; 14690 -&gt; 25</p>
<h6 id="params-18">Params</h6>
<ul>
<li>source:起始顶点id,必填项</li>
<li>direction:起始顶点发出的边的方向(OUT,IN,BOTH),选填项,默认是BOTH</li>
<li>label:边的类型,选填项,默认代表所有edge label</li>
<li>max_depth:步数,必填项</li>
<li>source_in_ring:环路是否包含起点,选填项,默认为true</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,选填项,默认为10000</li>
<li>capacity:遍历过程中最大的访问的顶点数目,选填项,默认为10000000</li>
<li>limit:返回的可达环路的最大数目,选填项,默认为10</li>
</ul>
<h5 id="32192-使用方法">3.2.19.2 使用方法</h5>
<h6 id="method--url-18">Method &amp; Url</h6>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/{graph}/traversers/rings?source=&#34;1:marko&#34;&amp;max_depth=2
</code></pre><h6 id="response-status-18">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-18">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;rings&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="32193-适用场景">3.2.19.3 适用场景</h5>
<p>查询起始顶点可达的环路,例如:</p>
<ul>
<li>风控项目中,查询一个用户可达的循环担保的人或者设备</li>
<li>设备关联网络中,发现一个设备周围的循环引用的设备</li>
</ul>
<h4 id="3220-rays">3.2.20 Rays</h4>
<h5 id="32201-功能介绍">3.2.20.1 功能介绍</h5>
<p>根据起始顶点、方向、边的类型(可选)和最大深度等条件查找发散到边界顶点的路径</p>
<p>例如:1 -&gt; 25 -&gt; 775 -&gt; 14690 -&gt; 2289 -&gt; 18379, 其中 18379 为边界顶点,即没有从 18379 发出的边</p>
<h6 id="params-19">Params</h6>
<ul>
<li>source:起始顶点id,必填项</li>
<li>direction:起始顶点发出的边的方向(OUT,IN,BOTH),选填项,默认是BOTH</li>
<li>label:边的类型,选填项,默认代表所有edge label</li>
<li>max_depth:步数,必填项</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,选填项,默认为10000</li>
<li>capacity:遍历过程中最大的访问的顶点数目,选填项,默认为10000000</li>
<li>limit:返回的非环路的最大数目,选填项,默认为10</li>
</ul>
<h5 id="32202-使用方法">3.2.20.2 使用方法</h5>
<h6 id="method--url-19">Method &amp; Url</h6>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/{graph}/traversers/rays?source=&#34;1:marko&#34;&amp;max_depth=2&amp;direction=OUT
</code></pre><h6 id="response-status-19">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-19">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;rays&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:vadas&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;objects&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;2:lop&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="32203-适用场景">3.2.20.3 适用场景</h5>
<p>查找起始顶点到某种关系的边界顶点的路径,例如:</p>
<ul>
<li>家族关系中,查找一个人到所有还没有孩子的子孙的路径</li>
<li>设备关联网络中,找到某个设备到终端设备的路径</li>
</ul>
<h4 id="3221-fusiform-similarity">3.2.21 Fusiform Similarity</h4>
<h5 id="32211-功能介绍">3.2.21.1 功能介绍</h5>
<p>按照条件查询一批顶点对应的&quot;梭形相似点&quot;。当两个顶点跟很多共同的顶点之间有某种关系的时候,我们认为这两个点为&quot;梭形相似点&quot;。举个例子说明&quot;梭形相似点&quot;:&ldquo;读者A&quot;读了100本书,可以定义读过这100本书中的80本以上的读者,是&quot;读者A&quot;的&quot;梭形相似点&rdquo;</p>
<h6 id="params-20">Params</h6>
<ul>
<li>
<p>sources:定义起始顶点,必填项,指定方式包括:</p>
<ul>
<li>ids:通过顶点id列表提供起始顶点</li>
<li>label和properties:如果没有指定ids,则使用label和properties的联合条件查询起始顶点
<ul>
<li>label:顶点的类型</li>
<li>properties:通过属性的值查询起始顶点</li>
</ul>
<blockquote>
<p>注意:properties中的属性值可以是列表,表示只要key对应的value在列表中就可以</p>
</blockquote>
</li>
</ul>
</li>
<li>
<p>label:边的类型,选填项,默认代表所有edge label</p>
</li>
<li>
<p>direction:起始顶点向外发散的方向(OUT,IN,BOTH),选填项,默认是BOTH</p>
</li>
<li>
<p>min_neighbors:最少邻居数目,邻居数目少于这个阈值时,认为起点不具备&quot;梭形相似点&quot;。比如想要找一个&quot;读者A&quot;读过的书的&quot;梭形相似点&quot;,那么<code>min_neighbors</code>为100时,表示&quot;读者A&quot;至少要读过100本书才可以有&quot;梭形相似点&quot;,必填项</p>
</li>
<li>
<p>alpha:相似度,代表:起点与&quot;梭形相似点&quot;的共同邻居数目占起点的全部邻居数目的比例,必填项</p>
</li>
<li>
<p>min_similars:&ldquo;梭形相似点&quot;的最少个数,只有当起点的&quot;梭形相似点&quot;数目大于或等于该值时,才会返回起点及其&quot;梭形相似点&rdquo;,选填项,默认值为1</p>
</li>
<li>
<p>top:返回一个起点的&quot;梭形相似点&quot;中相似度最高的top个,必填项,0表示全部</p>
</li>
<li>
<p>group_property:与<code>min_groups</code>一起使用,当起点跟其所有的&quot;梭形相似点&quot;某个属性的值有至少<code>min_groups</code>个不同值时,才会返回该起点及其&quot;梭形相似点&quot;。比如为&quot;读者A&quot;推荐&quot;异地&quot;书友时,需要设置<code>group_property</code>为读者的&quot;城市&quot;属性,<code>min_group</code>至少为2,选填项,不填代表不需要根据属性过滤</p>
</li>
<li>
<p>min_groups:与<code>group_property</code>一起使用,只有<code>group_property</code>设置时才有意义</p>
</li>
<li>
<p>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,选填项,默认为10000</p>
</li>
<li>
<p>capacity:遍历过程中最大的访问的顶点数目,选填项,默认为10000000</p>
</li>
<li>
<p>limit:返回的结果数目上限(一个起点及其&quot;梭形相似点&quot;算一个结果),选填项,默认为10</p>
</li>
<li>
<p>with_intermediary:是否返回起点及其&quot;梭形相似点&quot;共同关联的中间点,默认为false</p>
</li>
<li>
<p>with_vertex,选填项,默认为false:</p>
<ul>
<li>true表示返回结果包含完整的顶点信息</li>
<li>false时表示只返回顶点id</li>
</ul>
</li>
</ul>
<h5 id="32212-使用方法">3.2.21.2 使用方法</h5>
<h6 id="method--url-20">Method &amp; Url</h6>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/hugegraph/traversers/fusiformsimilarity
</code></pre><h6 id="request-body-8">Request Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;sources&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ids&#34;</span><span style="color:#000;font-weight:bold">:[],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;p1&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;read&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;direction&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;OUT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;min_neighbors&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">8</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;alpha&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">0.75</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;min_similars&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;top&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">0</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_property&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;min_group&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max_degree&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">10000</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;capacity&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">-1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;limit&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">-1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;with_intermediary&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;with_vertex&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#204a87;font-weight:bold">true</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h6 id="response-status-20">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-20">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;similars&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;3:p1&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;3:p2&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;score&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.8888888888888888</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;intermediaries&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;3:p3&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;score&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.7777777777777778</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;intermediaries&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;3:p1&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;p1&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;3:p2&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;p2&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Shanghai&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;3:p3&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;p3&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="32213-适用场景">3.2.21.3 适用场景</h5>
<p>查询一组顶点相似度很高的顶点。例如:</p>
<ul>
<li>跟一个读者有类似书单的读者</li>
<li>跟一个玩家玩类似游戏的玩家</li>
</ul>
<h4 id="3222-vertices">3.2.22 Vertices</h4>
<h5 id="32221-根据顶点的id列表批量查询顶点">3.2.22.1 根据顶点的id列表,批量查询顶点</h5>
<h6 id="params-21">Params</h6>
<ul>
<li>ids:要查询的顶点id列表</li>
</ul>
<h6 id="method--url-21">Method &amp; Url</h6>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/traversers/vertices?ids=&#34;1:marko&#34;&amp;ids=&#34;2:lop&#34;
</code></pre><h6 id="response-status-21">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-21">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:marko&gt;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:marko&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;marko&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:marko&gt;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">29</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&gt;price&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">328</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;lop&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&gt;lang&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;java&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="32222-获取顶点-shard-信息">3.2.22.2 获取顶点 Shard 信息</h5>
<p>通过指定的分片大小split_size,获取顶点分片信息(可以与 3.2.21.3 中的 Scan 配合使用来获取顶点)。</p>
<h6 id="params-22">Params</h6>
<ul>
<li>split_size:分片大小,必填项</li>
</ul>
<h6 id="method--url-22">Method &amp; Url</h6>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/traversers/vertices/shards?split_size=67108864
</code></pre><h6 id="response-status-22">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-22">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;shards&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;start&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;0&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;end&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2165893&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;length&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;start&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2165893&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;end&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;4331786&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;length&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;start&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;4331786&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;end&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;6497679&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;length&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;start&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;6497679&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;end&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;8663572&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;length&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#a40000">......</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="32223-根据shard信息批量获取顶点">3.2.22.3 根据Shard信息批量获取顶点</h5>
<p>通过指定的分片信息批量查询顶点(Shard信息的获取参见 3.2.21.2 Shard)。</p>
<h6 id="params-23">Params</h6>
<ul>
<li>start:分片起始位置,必填项</li>
<li>end:分片结束位置,必填项</li>
<li>page:分页位置,选填项,默认为null,不分页;当page为“”时表示分页的第一页,从start指示的位置开始</li>
<li>page_limit:分页获取顶点时,一页中顶点数目的上限,选填项,默认为100000</li>
</ul>
<h6 id="method--url-23">Method &amp; Url</h6>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/traversers/vertices/scan?start=0&amp;end=4294967295
</code></pre><h6 id="response-status-23">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-23">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:ripple&gt;price&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">199</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:ripple&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;ripple&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:ripple&gt;lang&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;java&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:vadas&gt;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;Hongkong&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:vadas&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;vadas&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:vadas&gt;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">27</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:peter&gt;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;Shanghai&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:peter&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;peter&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:peter&gt;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">35</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&gt;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;josh&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&gt;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">32</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:marko&gt;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:marko&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;marko&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:marko&gt;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">29</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;price&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&gt;price&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">328</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;lop&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;lang&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&gt;lang&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;java&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="32224-适用场景">3.2.22.4 适用场景</h5>
<ul>
<li>按id列表查询顶点,可用于批量查询顶点,比如在path查询到多条路径之后,可以进一步查询某条路径的所有顶点属性。</li>
<li>获取分片和按分片查询顶点,可以用来遍历全部顶点</li>
</ul>
<h4 id="3223-edges">3.2.23 Edges</h4>
<h5 id="32231-根据边的id列表批量查询边">3.2.23.1 根据边的id列表,批量查询边</h5>
<h6 id="params-24">Params</h6>
<ul>
<li>ids:要查询的边id列表</li>
</ul>
<h6 id="method--url-24">Method &amp; Url</h6>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/traversers/edges?ids=&#34;S1:josh&gt;1&gt;&gt;S2:lop&#34;&amp;ids=&#34;S1:josh&gt;1&gt;&gt;S2:ripple&#34;
</code></pre><h6 id="response-status-24">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-24">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;edges&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S1:josh&gt;1&gt;&gt;S2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;20091111&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.4</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S1:josh&gt;1&gt;&gt;S2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;20171210&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="32232-获取边-shard-信息">3.2.23.2 获取边 Shard 信息</h5>
<p>通过指定的分片大小split_size,获取边分片信息(可以与 3.2.22.3 中的 Scan 配合使用来获取边)。</p>
<h6 id="params-25">Params</h6>
<ul>
<li>split_size:分片大小,必填项</li>
</ul>
<h6 id="method--url-25">Method &amp; Url</h6>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/traversers/edges/shards?split_size=4294967295
</code></pre><h6 id="response-status-25">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-25">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;shards&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;start&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;0&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;end&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1073741823&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;length&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;start&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1073741823&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;end&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2147483646&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;length&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;start&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2147483646&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;end&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;3221225469&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;length&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;start&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;3221225469&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;end&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;4294967292&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;length&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;start&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;4294967292&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;end&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;4294967295&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;length&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="32233-根据-shard-信息批量获取边">3.2.23.3 根据 Shard 信息批量获取边</h5>
<p>通过指定的分片信息批量查询边(Shard信息的获取参见 3.2.22.2)。</p>
<h6 id="params-26">Params</h6>
<ul>
<li>start:分片起始位置,必填项</li>
<li>end:分片结束位置,必填项</li>
<li>page:分页位置,选填项,默认为null,不分页;当page为“”时表示分页的第一页,从start指示的位置开始</li>
<li>page_limit:分页获取边时,一页中边数目的上限,选填项,默认为100000</li>
</ul>
<h6 id="method--url-26">Method &amp; Url</h6>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/traversers/edges/scan?start=0&amp;end=3221225469
</code></pre><h6 id="response-status-26">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-26">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;edges&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;S1:peter&gt;2&gt;&gt;S2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:peter&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">0.2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;20170324&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;S1:josh&gt;2&gt;&gt;S2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">0.4</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;20091111&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;S1:josh&gt;2&gt;&gt;S2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:ripple&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;20171210&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;S1:marko&gt;1&gt;20130220&gt;S1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:josh&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;20130220&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;S1:marko&gt;1&gt;20160110&gt;S1:vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:vadas&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">0.5</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;20160110&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;S1:marko&gt;2&gt;&gt;S2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">0.4</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;20171210&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="32234-适用场景">3.2.23.4 适用场景</h5>
<ul>
<li>按id列表查询边,可用于批量查询边</li>
<li>获取分片和按分片查询边,可以用来遍历全部边</li>
</ul>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-ced5167413a6606a537e40b18f6fec3e">5.1.10 - Rank API</h1>
<h3 id="41-rank-api-概述">4.1 rank API 概述</h3>
<p>HugeGraphServer 除了上一节提到的遍历(traverser)方法,还提供了一类专门做推荐的方法,我们称为<code>rank API</code>
可在图中为一个点推荐与其关系密切的其它点。</p>
<h3 id="42-rank-api-详解">4.2 rank API 详解</h3>
<h4 id="421-personal-rank-api">4.2.1 Personal Rank API</h4>
<p>Personal Rank 算法典型场景是用于推荐应用中, 根据某个点现有的出边, 推荐具有相近 / 相同关系的其他点,
比如根据某个人的阅读记录 / 习惯, 向它推荐其他可能感兴趣的书, 或潜在的书友, 举例如下:</p>
<ol>
<li>假设给定 1个 Person 点 是 tom, 它喜欢 <code>a,b,c,d,e</code> 5本书, 我们的想给 tom 推荐一些书友, 以及一些书, 最容易的想法就是看看还有哪些人喜欢过这些书 (共同兴趣)</li>
<li>那么此时, 需要有其它的 Person 点比如 neo, 他喜欢 <code>b,d,f</code> 3本书, 以及 jay, 它喜欢 <code>c,d,e,g</code> 4本书, lee 它喜欢 <code>a,d,e,f</code> 4本书</li>
<li>由于 tom 已经看过的书不需要重复推荐, 所以返回结果里应该期望推荐有共同喜好的其他书友看过, 但 tom 没看过的书, 比如推荐 &ldquo;f&rdquo; 和 &ldquo;g&rdquo; 书, 且优先级 f &gt; g</li>
<li>此时再计算 tom 的个性化 rank 值, 就会返回排序后 TopN 推荐的 书友 + 书 的结果了 (如果只需要推荐的书, 选择 OTHER_LABEL 即可)</li>
</ol>
<h5 id="4210-数据准备">4.2.1.0 数据准备</h5>
<p>上面是一个简单的例子, 这里再提供一个公开的 1MB 测试数据集 <a href="https://grouplens.org/datasets/movielens/">MovieLens</a> 为例,
用户需下载该数据集,然后使用 HugeGraph-Loader 导入到 HugeGraph 中,简单起见,数据中顶点 user
和 movie 的属性都忽略,仅使用 id 字段即可,边 rating 的具体评分值也忽略。loader 使用的元数据
文件和输入源映射文件内容如下:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">////////////////////////////////////////////////////////////
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// UserID::Gender::Age::Occupation::Zip-code
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// MovieID::Title::Genres
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// UserID::MovieID::Rating::Timestamp
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">////////////////////////////////////////////////////////////
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Define schema
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;id&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asInt</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;rate&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asInt</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;user&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;id&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;id&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;movie&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;id&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;id&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;rating&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">sourceLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;user&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">targetLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;movie&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;rate&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;vertices&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;user&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;input&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;file&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;path&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;users.dat&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;TEXT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;delimiter&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;::&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;header&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;UserID&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Gender&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Age&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Occupation&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Zip-code&#34;</span><span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ignored&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;Gender&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Age&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Occupation&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Zip-code&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;mapping&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;UserID&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;id&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;movie&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;input&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;file&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;path&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;movies.dat&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;TEXT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;delimiter&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;::&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;header&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;MovieID&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Title&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Genres&#34;</span><span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ignored&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;Title&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Genres&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;mapping&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;MovieID&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;id&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;edges&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;rating&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;UserID&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;MovieID&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;input&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;file&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;path&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;ratings.dat&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;format&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;TEXT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;delimiter&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;::&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;header&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;UserID&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;MovieID&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Rating&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Timestamp&#34;</span><span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ignored&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;Timestamp&#34;</span><span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;mapping&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;UserID&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;id&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;MovieID&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;id&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;Rating&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;rate&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><blockquote>
<p>注意将映射文件中<code>input.path</code>的值修改为自己本地的路径。</p>
</blockquote>
<h5 id="4211-功能介绍">4.2.1.1 功能介绍</h5>
<p>适用于二分图,给出所有源顶点相关的其他顶点及其相关性组成的列表。</p>
<blockquote>
<p>二分图:也称二部图,是图论里的一种特殊模型,也是一种特殊的网络流。其最大的特点在于,可以将图里的顶点分为两个集合,两个集合之间的点有边相连,但集合内的点之间没有直接关联。</p>
</blockquote>
<p>假设有一个用户和物品的二分图,基于随机游走的 PersonalRank 算法步骤如下:</p>
<ol>
<li>选定一个起点用户 u,其初始权重为 1.0,从 Vu 开始游走(有 alpha 的概率走到邻居点,1 - alpha 的概率停留);</li>
<li>如果决定向外游走, 那么会选取某一个类型的出边, 例如 <code>rating</code> 来查找共同的打分人:
<ol>
<li>那就从当前节点的邻居节点中按照均匀分布随机选择一个,并且按照均匀分布划分权重值;</li>
<li>给源顶点补偿权重 1 - alpha;</li>
<li>重复步骤2;</li>
</ol>
</li>
<li>达到一定步数或达到精度后收敛,得到推荐列表。</li>
</ol>
<h6 id="params">Params</h6>
<p><strong>必填项</strong>:</p>
<ul>
<li>source: 源顶点 id</li>
<li>label: 源点出发的某类边 label,须连接两类不同顶点</li>
</ul>
<p><strong>选填项</strong>:</p>
<ul>
<li>alpha:每轮迭代时从某个点往外走的概率,与 PageRank 算法中的 alpha 类似,取值区间为 (0, 1], 默认值 <code>0.85</code></li>
<li>max_degree: 查询过程中,单个顶点遍历的最大邻接边数目,默认为 <code>10000</code></li>
<li>max_depth: 迭代次数,取值区间为 [2, 50], 默认值 <code>5</code></li>
<li>with_label:筛选结果中保留哪些结果,可选以下三类, 默认为 <code>BOTH_LABEL</code>
<ul>
<li>SAME_LABEL:仅保留与源顶点相同类别的顶点</li>
<li>OTHER_LABEL:仅保留与源顶点不同类别(二分图的另一端)的顶点</li>
<li>BOTH_LABEL:同时保留与源顶点相同和相反类别的顶点</li>
</ul>
</li>
<li>limit: 返回的顶点的最大数目,默认为 <code>100</code></li>
<li>max_diff: 提前收敛的精度差, 默认为 <code>0.0001</code> (<em>后续实现</em>)</li>
<li>sorted:返回的结果是否根据 rank 排序,为 true 时降序排列,反之不排序,默认为 <code>true</code></li>
</ul>
<h5 id="4212-使用方法">4.2.1.2 使用方法</h5>
<h6 id="method--url">Method &amp; Url</h6>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/hugegraph/traversers/personalrank
</code></pre><h6 id="request-body">Request Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:1&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;rating&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;alpha&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.6</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max_depth&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">15</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;with_label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;OTHER_LABEL&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;sorted&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;limit&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">10</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h6 id="response-status">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;2:2858&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.0005014026017816927</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;2:1196&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.0004336708357653617</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;2:1210&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.0004128083140214213</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;2:593&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.00038117341069881513</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;2:480&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.00037005373269728036</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;2:1198&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.000366641614652057</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;2:2396&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.0003622362410538888</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;2:2571&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.0003593312457300953</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;2:589&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.00035922123055598566</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;2:110&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.0003466135844390885</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="4213-适用场景">4.2.1.3 适用场景</h5>
<p>两类不同顶点连接形成的二分图中,给某个点推荐相关性最高的其他顶点,例如:</p>
<ul>
<li>阅读推荐: 找出优先给某人推荐的其他<strong>书籍</strong>, 也可以同时推荐共同喜好最高的<strong>书友</strong> (例: 微信 &ldquo;你的好友也在看 xx 文章&rdquo; 功能)</li>
<li>社交推荐: 找出拥有相同关注话题的其他<strong>博主</strong>, 也可以推荐可能感兴趣的<strong>新闻/消息</strong> (例: Weibo 中的 &ldquo;热点推荐&rdquo; 功能)</li>
<li>商品推荐: 通过某人现在的购物习惯, 找出应优先推给它的<strong>商品列表</strong>, 也可以给它推荐<strong>带货</strong>播主 (例: TaoBao 的 &ldquo;猜你喜欢&rdquo; 功能)</li>
</ul>
<h4 id="422-neighbor-rank-api">4.2.2 Neighbor Rank API</h4>
<h5 id="4220-数据准备">4.2.2.0 数据准备</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">class</span> <span style="color:#000">Loader</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">static</span> <span style="color:#204a87;font-weight:bold">void</span> <span style="color:#000">main</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">String</span><span style="color:#ce5c00;font-weight:bold">[]</span> <span style="color:#000">args</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">HugeClient</span> <span style="color:#000">client</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">HugeClient</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;http://127.0.0.1:8080&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;hugegraph&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">SchemaManager</span> <span style="color:#000">schema</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">client</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">schema</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">useCustomizeStringId</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;movie&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">useCustomizeStringId</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;follow&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">sourceLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">targetLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;like&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">sourceLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">targetLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;movie&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;directedBy&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">sourceLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;movie&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">targetLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">GraphManager</span> <span style="color:#000">graph</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">client</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">graph</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">O</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">id</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;O&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;O&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">A</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">id</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;A&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;A&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">B</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">id</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;B&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;B&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">C</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">id</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;C&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;C&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">D</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">id</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;D&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;D&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">E</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;movie&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">id</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;E&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;E&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">F</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;movie&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">id</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;F&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;F&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">G</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;movie&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">id</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;G&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;G&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">H</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;movie&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">id</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;H&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;H&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">I</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;movie&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">id</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;I&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;I&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">J</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;movie&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">id</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;J&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;J&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">K</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">id</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;K&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;K&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">L</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">id</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;L&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;L&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">M</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">id</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;M&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;M&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">O</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;follow&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">A</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">O</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;follow&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">B</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">O</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;follow&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">C</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">D</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;follow&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">O</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">A</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;follow&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">B</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">A</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;like&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">E</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">A</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;like&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">F</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">B</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;like&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">G</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">B</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;like&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">H</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">C</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;like&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">I</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">C</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;like&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">J</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">E</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;directedBy&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">K</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">F</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;directedBy&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">B</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">F</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;directedBy&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">L</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">G</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;directedBy&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">M</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="4221-功能介绍">4.2.2.1 功能介绍</h5>
<p>在一般图结构中,找出每一层与给定起点相关性最高的前 N 个顶点及其相关度,用图的语义理解就是:从起点往外走,
走到各层各个顶点的概率。</p>
<h6 id="params-1">Params</h6>
<ul>
<li>source: 源顶点 id,必填项</li>
<li>alpha:每轮迭代时从某个点往外走的概率,与 PageRank 算法中的 alpha 类似,必填项,取值区间为 (0, 1]</li>
<li>steps: 表示从起始顶点走过的路径规则,是一组 Step 的列表,每个 Step 对应结果中的一层,必填项。每个 Step 的结构如下:
<ul>
<li>direction:表示边的方向(OUT, IN, BOTH),默认是 BOTH</li>
<li>labels:边的类型列表,多个边类型取并集</li>
<li>max_degree:查询过程中,单个顶点遍历的最大邻接边数目,默认为 10000 (注: 0.12版之前 step 内仅支持 degree 作为参数名, 0.12开始统一使用 max_degree, 并向下兼容 degree 写法)</li>
<li>top:在结果中每一层只保留权重最高的前 N 个结果,默认为 100,最大值为 1000</li>
</ul>
</li>
<li>capacity: 遍历过程中最大的访问的顶点数目,选填项,默认为10000000</li>
</ul>
<h5 id="4222-使用方法">4.2.2.2 使用方法</h5>
<h6 id="method--url-1">Method &amp; Url</h6>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/hugegraph/traversers/neighborrank
</code></pre><h6 id="request-body-1">Request Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;source&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;O&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;steps&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;direction&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;OUT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;labels&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;follow&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max_degree&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">-1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;top&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">100</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;direction&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;OUT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;labels&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;follow&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;like&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max_degree&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">-1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;top&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">100</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;direction&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">&#34;OUT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;labels&#34;</span><span style="color:#000;font-weight:bold">:[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;directedBy&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;max_degree&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">-1</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;top&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">100</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;alpha&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">0.9</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;capacity&#34;</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">-1</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h6 id="response-status-1">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-1">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;ranks&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;O&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;B&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.4305</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;A&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.3</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;C&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.3</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;G&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.17550000000000002</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;H&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.17550000000000002</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;I&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.135</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;J&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.135</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;E&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.09000000000000001</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;F&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.09000000000000001</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;M&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.15795</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;K&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.08100000000000002</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;L&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.04050000000000001</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="4223-适用场景">4.2.2.3 适用场景</h5>
<p>为给定的起点在不同的层中找到最应该推荐的顶点。</p>
<ul>
<li>比如:在观众、朋友、电影、导演的四层图结构中,根据某个观众的朋友们喜欢的电影,为这个观众推荐电影;或者根据这些电影是谁拍的,为其推荐导演。</li>
</ul>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-32aff6fa72d51caa846c2a72e5771c5d">5.1.11 - Variable API</h1>
<h3 id="51-variables">5.1 Variables</h3>
<p>Variables可以用来存储有关整个图的数据,数据按照键值对的方式存取</p>
<h4 id="511-创建或者更新某个键值对">5.1.1 创建或者更新某个键值对</h4>
<h5 id="method--url">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://localhost:8080/graphs/hugegraph/variables/name
</code></pre><h5 id="request-body">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;tom&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;tom&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="512-列出全部键值对">5.1.2 列出全部键值对</h4>
<h5 id="method--url-1">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/variables
</code></pre><h5 id="response-status-1">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-1">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;tom&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="513-列出某个键值对">5.1.3 列出某个键值对</h4>
<h5 id="method--url-2">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/variables/name
</code></pre><h5 id="response-status-2">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-2">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;tom&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="514-删除某个键值对">5.1.4 删除某个键值对</h4>
<h5 id="method--url-3">Method &amp; Url</h5>
<pre tabindex="0"><code>DELETE http://localhost:8080/graphs/hugegraph/variables/name
</code></pre><h5 id="response-status-3">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">204</span>
</span></span></code></pre></div>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-3d75cf337650cd90a617c3ef7e9dca87">5.1.12 - Graphs API</h1>
<h3 id="61-graphs">6.1 Graphs</h3>
<h4 id="611-列出数据库中全部的图">6.1.1 列出数据库中全部的图</h4>
<h5 id="method--url">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs
</code></pre><h5 id="response-status">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;graphs&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;hugegraph&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;hugegraph1&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="612-查看某个图的信息">6.1.2 查看某个图的信息</h4>
<h5 id="method--url-1">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph
</code></pre><h5 id="response-status-1">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-1">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;hugegraph&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;backend&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;cassandra&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="613-清空某个图的全部数据包括schemavertexedge和index等该操作需要管理员权限">6.1.3 清空某个图的全部数据,包括schema、vertex、edge和index等,<strong>该操作需要管理员权限</strong></h4>
<h5 id="params">Params</h5>
<p>由于清空图是一个比较危险的操作,为避免用户误调用,我们给API添加了用于确认的参数:</p>
<ul>
<li>confirm_message: 默认为<code>I'm sure to delete all data</code></li>
</ul>
<h5 id="method--url-2">Method &amp; Url</h5>
<pre tabindex="0"><code>DELETE http://localhost:8080/graphs/hugegraph/clear?confirm_message=I%27m+sure+to+delete+all+data
</code></pre><h5 id="response-status-2">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">204</span>
</span></span></code></pre></div><h3 id="62-conf">6.2 Conf</h3>
<h4 id="621-查看某个图的配置该操作需要管理员权限">6.2.1 查看某个图的配置,<strong>该操作需要管理员权限</strong></h4>
<h5 id="method--url-3">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/conf
</code></pre><h5 id="response-status-3">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-2">Response Body</h5>
<pre tabindex="0"><code class="language-properties" data-lang="properties"># gremlin entrence to create graph
gremlin.graph=com.baidu.hugegraph.HugeFactory
# cache config
#schema.cache_capacity=1048576
#graph.cache_capacity=10485760
#graph.cache_expire=600
# schema illegal name template
#schema.illegal_name_regex=\s+|~.*
#vertex.default_label=vertex
backend=cassandra
serializer=cassandra
store=hugegraph
...
</code></pre><h3 id="63-mode">6.3 Mode</h3>
<p>合法的图模式包括:NONE,RESTORING,MERGING,LOADING</p>
<ul>
<li>None 模式(默认),元数据和图数据的写入属于正常状态。特别的:
<ul>
<li>元数据(schema)创建时不允许指定 ID</li>
<li>图数据(vertex)在 id strategy 为 Automatic 时,不允许指定 ID</li>
</ul>
</li>
<li>LOADING:批量导入数据时自动启用,特别的:
<ul>
<li>添加顶点/边时,不会检查必填属性是否传入</li>
</ul>
</li>
</ul>
<p>Restore 时存在两种不同的模式: Restoring 和 Merging</p>
<ul>
<li>Restoring 模式,恢复到一个新图中,特别的:
<ul>
<li>元数据(schema)创建时允许指定 ID</li>
<li>图数据(vertex)在 id strategy 为 Automatic 时,允许指定 ID</li>
</ul>
</li>
<li>Merging 模式,合并到一个已存在元数据和图数据的图中,特别的:
<ul>
<li>元数据(schema)创建时不允许指定 ID</li>
<li>图数据(vertex)在 id strategy 为 Automatic 时,允许指定 ID</li>
</ul>
</li>
</ul>
<p>正常情况下,图模式为 None,当需要 Restore 图时,需要根据需要临时修改图模式为 Restoring 模式或者 Merging 模式,并在完成 Restore 时,恢复图模式为 None。</p>
<h4 id="631-查看某个图的模式-该操作需要管理员权限">6.3.1 查看某个图的模式. <strong>该操作需要管理员权限</strong></h4>
<h5 id="method--url-4">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/mode
</code></pre><h5 id="response-status-4">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-3">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;mode&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;NONE&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><blockquote>
<p>合法的图模式包括:NONE,RESTORING,MERGING</p>
</blockquote>
<h4 id="632-设置某个图的模式-该操作需要管理员权限">6.3.2 设置某个图的模式. <strong>该操作需要管理员权限</strong></h4>
<h5 id="method--url-5">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://localhost:8080/graphs/hugegraph/mode
</code></pre><h5 id="request-body">Request Body</h5>
<pre tabindex="0"><code>&#34;RESTORING&#34;
</code></pre><blockquote>
<p>合法的图模式包括:NONE,RESTORING,MERGING</p>
</blockquote>
<h5 id="response-status-5">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-4">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;mode&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;RESTORING&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-d9de752e44e3a8a709d187e4101fd818">5.1.13 - Task API</h1>
<h3 id="71-task">7.1 Task</h3>
<h4 id="711-list-all-async-tasks-in-graph">7.1.1 List all async tasks in graph</h4>
<h5 id="params">Params</h5>
<ul>
<li>status: the status of asynTasks</li>
<li>limit:the max number of tasks to return</li>
</ul>
<h5 id="method--url">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/tasks?status=success
</code></pre><h5 id="response-status">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;tasks&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;hugegraph.traversal().V()&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_progress&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1532943976585</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;success&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1532943976736</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_result&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;0&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_retries&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;gremlin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_callable&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;com.baidu.hugegraph.api.job.GremlinAPI$GremlinJob&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_input&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;{\&#34;gremlin\&#34;:\&#34;hugegraph.traversal().V()\&#34;,\&#34;bindings\&#34;:{},\&#34;language\&#34;:\&#34;gremlin-groovy\&#34;,\&#34;aliases\&#34;:{\&#34;hugegraph\&#34;:\&#34;graph\&#34;}}&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="712-view-the-details-of-an-async-task">7.1.2 View the details of an async task</h4>
<h5 id="method--url-1">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/tasks/2
</code></pre><h5 id="response-status-1">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-1">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;hugegraph.traversal().V()&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_progress&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1532943976585</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;success&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1532943976736</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_result&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;0&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_retries&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;gremlin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_callable&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;com.baidu.hugegraph.api.job.GremlinAPI$GremlinJob&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_input&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;{\&#34;gremlin\&#34;:\&#34;hugegraph.traversal().V()\&#34;,\&#34;bindings\&#34;:{},\&#34;language\&#34;:\&#34;gremlin-groovy\&#34;,\&#34;aliases\&#34;:{\&#34;hugegraph\&#34;:\&#34;graph\&#34;}}&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="713-delete-task-infomation-of-an-async-taskwont-delete-the-task-itself">7.1.3 Delete task infomation of an async task,<strong>won&rsquo;t delete the task itself</strong></h4>
<h5 id="method--url-2">Method &amp; Url</h5>
<pre tabindex="0"><code>DELETE http://localhost:8080/graphs/hugegraph/tasks/2
</code></pre><h5 id="response-status-2">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">204</span>
</span></span></code></pre></div><h4 id="714-取消某个异步任务该异步任务必须具有处理中断的能力">7.1.4 取消某个异步任务,<strong>该异步任务必须具有处理中断的能力</strong></h4>
<p>If you already created an async task via <a href="../gremlin">Gremlin API</a> as follows:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#4e9a06">&#34;for (int i = 0; i &lt; 10; i++) {&#34;</span> <span style="color:#ce5c00;font-weight:bold">+</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;hugegraph.addVertex(T.label, &#39;man&#39;);&#34;</span> <span style="color:#ce5c00;font-weight:bold">+</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;hugegraph.tx().commit();&#34;</span> <span style="color:#ce5c00;font-weight:bold">+</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;try {&#34;</span> <span style="color:#ce5c00;font-weight:bold">+</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;sleep(1000);&#34;</span> <span style="color:#ce5c00;font-weight:bold">+</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;} catch (InterruptedException e) {&#34;</span> <span style="color:#ce5c00;font-weight:bold">+</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;break;&#34;</span> <span style="color:#ce5c00;font-weight:bold">+</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;}&#34;</span> <span style="color:#ce5c00;font-weight:bold">+</span>
</span></span><span style="display:flex;"><span><span style="color:#4e9a06">&#34;}&#34;</span>
</span></span></code></pre></div><h5 id="method--url-3">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://localhost:8080/graphs/hugegraph/tasks/2?action=cancel
</code></pre><blockquote>
<p>cancel it in 10s. if more than 10s,the task may already finished,then can&rsquo;t be cancelled.</p>
</blockquote>
<h5 id="response-status-3">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">202</span>
</span></span></code></pre></div><h5 id="response-body-2">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;cancelled&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>At this point, the number of vertices whose label is man must be less than 10.</p>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-e84b0f106294b580ca64918b72cc71d1">5.1.14 - Gremlin API</h1>
<h3 id="81-gremlin">8.1 Gremlin</h3>
<h4 id="811-向hugegraphserver发送gremlin语句get同步执行">8.1.1 向HugeGraphServer发送gremlin语句(GET),同步执行</h4>
<h5 id="params">Params</h5>
<ul>
<li>gremlin: 要发送给<code>HugeGraphServer</code>执行的<code>gremlin</code>语句</li>
<li>bindings: 用来绑定参数,key是字符串,value是绑定的值(只能是字符串或者数字),功能类似于MySQL的 Prepared Statement,用于加速语句执行</li>
<li>language: 发送语句的语言类型,默认为<code>gremlin-groovy</code></li>
<li>aliases: 为存在于图空间的已有变量添加别名</li>
</ul>
<p><strong>查询顶点</strong></p>
<h5 id="method--url">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://127.0.0.1:8080/gremlin?gremlin=hugegraph.traversal().V(&#39;1:marko&#39;)
</code></pre><h5 id="response-status">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;requestId&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;c6ef47a8-b634-4b07-9d38-6b3b69a3a556&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;message&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;code&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">200</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;attributes&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;result&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;marko&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">29</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;meta&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="812-向hugegraphserver发送gremlin语句post同步执行">8.1.2 向HugeGraphServer发送gremlin语句(POST),同步执行</h4>
<h5 id="method--url-1">Method &amp; Url</h5>
<pre tabindex="0"><code>POST http://localhost:8080/gremlin
</code></pre><p><strong>查询顶点</strong></p>
<h5 id="request-body">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;gremlin&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;hugegraph.traversal().V(&#39;1:marko&#39;)&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;bindings&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;language&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;gremlin-groovy&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;aliases&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status-1">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-1">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;requestId&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;c6ef47a8-b634-4b07-9d38-6b3b69a3a556&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;message&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;code&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">200</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;attributes&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;result&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;vertex&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;city&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;city&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;name&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;marko&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;age&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&gt;age&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;value&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">29</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;meta&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>注意:</p>
<blockquote>
<p>这里是直接使用图对象(hugegraph),先获取其遍历器(traversal()),再获取顶点。
不能直接写成<code>graph.traversal().V()</code><code>g.V()</code>,可以通过<code>&quot;aliases&quot;: {&quot;graph&quot;: &quot;hugegraph&quot;, &quot;g&quot;: &quot;__g_hugegraph&quot;}</code>
为图和遍历器添加别名后使用别名操作。其中,<code>hugegraph</code>是原生存在的变量,<code>__g_hugegraph</code><code>HugeGraphServer</code>额外添加的变量,
每个图都会存在一个对应的这样格式(_<em>g</em>${graph})的遍历器对象。</p>
</blockquote>
<blockquote>
<p>响应体的结构与其他 Vertex 或 Edge 的 RESTful API的结构有区别,用户可能需要自行解析。</p>
</blockquote>
<p><strong>查询边</strong></p>
<h5 id="request-body-1">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;gremlin&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;g.E(&#39;S1:marko&gt;2&gt;&gt;S2:lop&#39;)&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;bindings&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;language&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;gremlin-groovy&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;aliases&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;graph&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;hugegraph&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;g&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;__g_hugegraph&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status-2">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-2">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;requestId&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;3f117cd4-eedc-4e08-a106-ee01d7bb8249&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;status&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;message&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;code&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">200</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;attributes&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;result&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;data&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S1:marko&gt;2&gt;&gt;S2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;edge&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outVLabel&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;inV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2:lop&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;outV&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;1:marko&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;weight&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">0.4</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;date&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;20171210&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;meta&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="813-向hugegraphserver发送gremlin语句post异步执行">8.1.3 向HugeGraphServer发送gremlin语句(POST),异步执行</h4>
<h5 id="method--url-2">Method &amp; Url</h5>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/hugegraph/jobs/gremlin
</code></pre><p><strong>查询顶点</strong></p>
<h5 id="request-body-2">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;gremlin&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;g.V(&#39;1:marko&#39;)&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;bindings&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;language&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;gremlin-groovy&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;aliases&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>注意:</p>
<blockquote>
<p>异步执行Gremlin语句暂不支持aliases,可以使用 <code>graph</code> 代表要操作的图,也可以直接使用图的名字, 例如 <code>hugegraph</code>;
另外<code>g</code>代表 traversal,等价于 <code>graph.traversal()</code> 或者 <code>hugegraph.traversal()</code></p>
</blockquote>
<h5 id="response-status-3">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">201</span>
</span></span></code></pre></div><h5 id="response-body-3">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>注:</p>
<blockquote>
<p>可以通过<code>GET http://localhost:8080/graphs/hugegraph/tasks/1</code>(其中&quot;1&quot;是task_id)来查询异步任务的执行状态,更多<a href="../task">异步任务RESTful API</a></p>
</blockquote>
<p><strong>查询边</strong></p>
<h5 id="request-body-3">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;gremlin&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;g.E(&#39;S1:marko&gt;2&gt;&gt;S2:lop&#39;)&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;bindings&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{},</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;language&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;gremlin-groovy&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;aliases&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status-4">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">201</span>
</span></span></code></pre></div><h5 id="response-body-4">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;task_id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">2</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><p>注:</p>
<blockquote>
<p>可以通过<code>GET http://localhost:8080/graphs/hugegraph/tasks/2</code>(其中&quot;2&quot;是task_id)来查询异步任务的执行状态,更多<a href="../task">异步任务RESTful API</a></p>
</blockquote>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-a3b125f257052209fcb98300d5c066a7">5.1.15 - Authentication API</h1>
<h3 id="91-用户认证与权限控制">9.1 用户认证与权限控制</h3>
<blockquote>
<p>开启权限及相关配置请先参考 <a href="/docs/config/config-authentication/">权限配置</a> 文档</p>
</blockquote>
<h5 id="用户认证与权限控制概述">用户认证与权限控制概述:</h5>
<p>HugeGraph支持多用户认证、以及细粒度的权限访问控制,采用基于“用户-用户组-操作-资源”的4层设计,灵活控制用户角色与权限。
资源描述了图数据库中的数据,比如符合某一类条件的顶点,每一个资源包括type、label、properties三个要素,共有18种type、
任意label、任意properties的组合形成的资源,一个资源的内部条件是且关系,多个资源之间的条件是或关系。用户可以属于一个或多个用户组,
每个用户组可以拥有对任意个资源的操作权限,操作类型包括:读、写、删除、执行等种类。 HugeGraph支持动态创建用户、用户组、资源,
支持动态分配或取消权限。初始化数据库时超级管理员用户被创建,后续可通过超级管理员创建各类角色用户,新创建的用户如果被分配足够权限后,可以由其创建或管理更多的用户。</p>
<h5 id="举例说明">举例说明:</h5>
<p>user(name=boss) -belong-&gt; group(name=all) -access(read)-&gt; target(graph=graph1, resource={label: person,
city: Beijing})<br>
描述:用户&rsquo;boss&rsquo;拥有对&rsquo;graph1&rsquo;图中北京人的读权限。</p>
<h5 id="接口说明">接口说明:</h5>
<p>用户认证与权限控制接口包括5类:UserAPI、GroupAPI、TargetAPI、BelongAPI、AccessAPI。</p>
<h3 id="92-用户userapi">9.2 用户(User)API</h3>
<p>用户接口包括:创建用户,删除用户,修改用户,和查询用户相关信息接口。</p>
<h4 id="921-创建用户">9.2.1 创建用户</h4>
<h5 id="params">Params</h5>
<ul>
<li>user_name: 用户名称</li>
<li>user_password: 用户密码</li>
<li>user_phone: 用户手机号</li>
<li>user_email: 用户邮箱</li>
</ul>
<p>其中 user_name 和 user_password 为必填。</p>
<h5 id="request-body">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;boss&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_password&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;******&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_phone&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;182****9088&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_email&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;123@xx.com&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="method--url">Method &amp; Url</h5>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/hugegraph/auth/users
</code></pre><h5 id="response-status">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">201</span>
</span></span></code></pre></div><h5 id="response-body">Response Body</h5>
<p>返回报文中,密码为加密后的密文</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_password&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;******&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_email&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;123@xx.com&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-17 14:31:07.833&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;boss&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_phone&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;182****9088&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-63:boss&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-17 14:31:07.833&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="922-删除用户">9.2.2 删除用户</h4>
<h5 id="params-1">Params</h5>
<ul>
<li>id: 需要删除的用户 Id</li>
</ul>
<h5 id="method--url-1">Method &amp; Url</h5>
<pre tabindex="0"><code>DELETE http://localhost:8080/graphs/hugegraph/auth/users/-63:test
</code></pre><h5 id="response-status-1">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">204</span>
</span></span></code></pre></div><h5 id="response-body-1">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">1</span>
</span></span></code></pre></div><h4 id="923-修改用户">9.2.3 修改用户</h4>
<h5 id="params-2">Params</h5>
<ul>
<li>id: 需要修改的用户 Id</li>
</ul>
<h5 id="method--url-2">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://localhost:8080/graphs/hugegraph/auth/users/-63:test
</code></pre><h5 id="request-body-1">Request Body</h5>
<p>修改user_name、user_password和user_phone</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;test&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_password&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;******&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_phone&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;183****9266&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status-2">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-2">Response Body</h5>
<p>返回结果是包含修改过的内容在内的整个用户组对象</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_password&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;******&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-12 10:29:30.455&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;test&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_phone&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;183****9266&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-63:test&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-12 10:27:13.601&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="924-查询用户列表">9.2.4 查询用户列表</h4>
<h5 id="params-3">Params</h5>
<ul>
<li>limit: 返回结果条数的上限</li>
</ul>
<h5 id="method--url-3">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/auth/users
</code></pre><h5 id="response-status-3">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-3">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;users&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_password&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;******&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 11:41:12.254&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;system&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-63:admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 11:41:12.254&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="925-查询某个用户">9.2.5 查询某个用户</h4>
<h5 id="params-4">Params</h5>
<ul>
<li>id: 需要查询的用户 Id</li>
</ul>
<h5 id="method--url-4">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/auth/users/-63:admin
</code></pre><h5 id="response-status-4">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-4">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;users&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_password&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;******&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 11:41:12.254&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;system&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-63:admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 11:41:12.254&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="926-查询某个用户的角色">9.2.6 查询某个用户的角色</h4>
<h5 id="method--url-5">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/auth/users/-63:boss/role
</code></pre><h5 id="response-status-5">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-5">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;roles&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;hugegraph&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;READ&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;ALL&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;*&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">null</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h3 id="93-用户组groupapi">9.3 用户组(Group)API</h3>
<p>用户组会赋予相应的资源权限,用户会被分配不同的用户组,即可拥有不同的资源权限。<br>
用户组接口包括:创建用户组,删除用户组,修改用户组,和查询用户组相关信息接口。</p>
<h4 id="931-创建用户组">9.3.1 创建用户组</h4>
<h5 id="params-5">Params</h5>
<ul>
<li>group_name: 用户组名称</li>
<li>group_description: 用户组描述</li>
</ul>
<h5 id="request-body-2">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_description&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;group can do anything&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="method--url-6">Method &amp; Url</h5>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/hugegraph/auth/groups
</code></pre><h5 id="response-status-6">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">201</span>
</span></span></code></pre></div><h5 id="response-body-6">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:46:08.791&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:46:08.791&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-69:all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_description&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;group can do anything&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="932-删除用户组">9.3.2 删除用户组</h4>
<h5 id="params-6">Params</h5>
<ul>
<li>id: 需要删除的用户组 Id</li>
</ul>
<h5 id="method--url-7">Method &amp; Url</h5>
<pre tabindex="0"><code>DELETE http://localhost:8080/graphs/hugegraph/auth/groups/-69:grant
</code></pre><h5 id="response-status-7">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">204</span>
</span></span></code></pre></div><h5 id="response-body-7">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">1</span>
</span></span></code></pre></div><h4 id="933-修改用户组">9.3.3 修改用户组</h4>
<h5 id="params-7">Params</h5>
<ul>
<li>id: 需要修改的用户组 Id</li>
</ul>
<h5 id="method--url-8">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://localhost:8080/graphs/hugegraph/auth/groups/-69:grant
</code></pre><h5 id="request-body-3">Request Body</h5>
<p>修改group_description</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;grant&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_description&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;grant&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status-8">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-8">Response Body</h5>
<p>返回结果是包含修改过的内容在内的整个用户组对象</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;grant&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-12 09:50:58.458&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-12 09:57:58.155&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-69:grant&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_description&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;grant&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="934-查询用户组列表">9.3.4 查询用户组列表</h4>
<h5 id="params-8">Params</h5>
<ul>
<li>limit: 返回结果条数的上限</li>
</ul>
<h5 id="method--url-9">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/auth/groups
</code></pre><h5 id="response-status-9">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-9">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;groups&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:46:08.791&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:46:08.791&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-69:all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_description&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;group can do anything&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="935-查询某个用户组">9.3.5 查询某个用户组</h4>
<h5 id="params-9">Params</h5>
<ul>
<li>id: 需要查询的用户组 Id</li>
</ul>
<h5 id="method--url-10">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/auth/groups/-69:all
</code></pre><h5 id="response-status-10">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-10">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:46:08.791&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:46:08.791&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-69:all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group_description&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;group can do anything&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h3 id="94-资源targetapi">9.4 资源(Target)API</h3>
<p>资源描述了图数据库中的数据,比如符合某一类条件的顶点,每一个资源包括type、label、properties三个要素,共有18种type、
任意label、任意properties的组合形成的资源,一个资源的内部条件是且关系,多个资源之间的条件是或关系。<br>
资源接口包括:资源的创建、删除、修改和查询。</p>
<h4 id="941-创建资源">9.4.1 创建资源</h4>
<h5 id="params-10">Params</h5>
<ul>
<li>target_name: 资源名称</li>
<li>target_graph: 资源图</li>
<li>target_url: 资源地址</li>
<li>target_resources: 资源定义(列表)</li>
</ul>
<p>target_resources可以包括多个target_resource,以列表的形式存储。<br>
每个target_resource包含:</p>
<ul>
<li>type:可选值 VERTEX, EDGE等, 可填ALL,则表示可以是顶点或边;</li>
<li>label:可选值,⼀个顶点或边类型的名称,可填*,则表示任意类型;</li>
<li>properties:map类型,可包含多个属性的键值对,必须匹配所有属性值,属性值⽀持填条件范围(age:
P.gte(18)),properties如果为null表示任意属性均可,如果属性名和属性值均为‘*ʼ也表示任意属性均可。</li>
</ul>
<p>如精细资源:&ldquo;target_resources&rdquo;: [{&ldquo;type&rdquo;:&ldquo;VERTEX&rdquo;,&ldquo;label&rdquo;:&ldquo;person&rdquo;,&ldquo;properties&rdquo;:{&ldquo;city&rdquo;:&ldquo;Beijing&rdquo;,&ldquo;age&rdquo;:&ldquo;P.gte(20)&rdquo;}}]**<br>
资源定义含义:类型是&rsquo;person&rsquo;的顶点,且城市属性是&rsquo;Beijing&rsquo;,年龄属性大于等于20。</p>
<h5 id="request-body-4">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_graph&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;hugegraph&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_url&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;127.0.0.1:8080&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_resources&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;ALL&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="method--url-11">Method &amp; Url</h5>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/hugegraph/auth/targets
</code></pre><h5 id="response-status-11">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">201</span>
</span></span></code></pre></div><h5 id="response-body-11">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_url&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;127.0.0.1:8080&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_graph&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;hugegraph&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:32:01.192&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_resources&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;ALL&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;*&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">null</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-77:all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:32:01.192&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="942-删除资源">9.4.2 删除资源</h4>
<h5 id="params-11">Params</h5>
<ul>
<li>id: 需要删除的资源 Id</li>
</ul>
<h5 id="method--url-12">Method &amp; Url</h5>
<pre tabindex="0"><code>DELETE http://localhost:8080/graphs/hugegraph/auth/targets/-77:gremlin
</code></pre><h5 id="response-status-12">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">204</span>
</span></span></code></pre></div><h5 id="response-body-12">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">1</span>
</span></span></code></pre></div><h4 id="943-修改资源">9.4.3 修改资源</h4>
<h5 id="params-12">Params</h5>
<ul>
<li>id: 需要修改的资源 Id</li>
</ul>
<h5 id="method--url-13">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://localhost:8080/graphs/hugegraph/auth/targets/-77:gremlin
</code></pre><h5 id="request-body-5">Request Body</h5>
<p>修改资源定义中的type</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;gremlin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_graph&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;hugegraph&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_url&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;127.0.0.1:8080&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_resources&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;NONE&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status-13">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-13">Response Body</h5>
<p>返回结果是包含修改过的内容在内的整个用户组对象</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;gremlin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_url&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;127.0.0.1:8080&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_graph&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;hugegraph&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-12 09:34:13.848&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_resources&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;NONE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;*&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">null</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-77:gremlin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-12 09:37:12.780&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="944-查询资源列表">9.4.4 查询资源列表</h4>
<h5 id="params-13">Params</h5>
<ul>
<li>limit: 返回结果条数的上限</li>
</ul>
<h5 id="method--url-14">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/auth/targets
</code></pre><h5 id="response-status-14">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-14">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;targets&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_url&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;127.0.0.1:8080&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_graph&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;hugegraph&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:32:01.192&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_resources&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;ALL&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;*&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">null</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-77:all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:32:01.192&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;grant&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_url&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;127.0.0.1:8080&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_graph&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;hugegraph&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:43:24.841&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_resources&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;GRANT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;*&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">null</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-77:grant&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:43:24.841&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="945-查询某个资源">9.4.5 查询某个资源</h4>
<h5 id="params-14">Params</h5>
<ul>
<li>id: 需要查询的资源 Id</li>
</ul>
<h5 id="method--url-15">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/auth/targets/-77:grant
</code></pre><h5 id="response-status-15">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-15">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_name&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;grant&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_url&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;127.0.0.1:8080&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_graph&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;hugegraph&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:43:24.841&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_resources&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;type&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;GRANT&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;label&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;*&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;properties&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">null</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">],</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-77:grant&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:43:24.841&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h3 id="95-关联角色belongapi">9.5 关联角色(Belong)API</h3>
<p>关联用户和用户组的关系,一个用户可以关联一个或者多个用户组。用户组拥有相关资源的权限,不同用户组的资源权限可以理解为不同的角色。即给用户关联角色。<br>
关联角色接口包括:用户关联角色的创建、删除、修改和查询。</p>
<h4 id="951-创建用户的关联角色">9.5.1 创建用户的关联角色</h4>
<h5 id="params-15">Params</h5>
<ul>
<li>user: 用户 Id</li>
<li>group: 用户组 Id</li>
<li>belong_description: 描述</li>
</ul>
<h5 id="request-body-6">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-63:boss&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-69:all&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="method--url-16">Method &amp; Url</h5>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/hugegraph/auth/belongs
</code></pre><h5 id="response-status-16">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">201</span>
</span></span></code></pre></div><h5 id="response-body-16">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;belong_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 16:19:35.422&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;belong_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;belong_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 16:19:35.422&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S-63:boss&gt;-82&gt;&gt;S-69:all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-63:boss&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-69:all&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="952-删除关联角色">9.5.2 删除关联角色</h4>
<h5 id="params-16">Params</h5>
<ul>
<li>id: 需要删除的关联角色 Id</li>
</ul>
<h5 id="method--url-17">Method &amp; Url</h5>
<pre tabindex="0"><code>DELETE http://localhost:8080/graphs/hugegraph/auth/belongs/S-63:boss&gt;-82&gt;&gt;S-69:grant
</code></pre><h5 id="response-status-17">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">204</span>
</span></span></code></pre></div><h5 id="response-body-17">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">1</span>
</span></span></code></pre></div><h4 id="953-修改关联角色">9.5.3 修改关联角色</h4>
<p>关联角色只能修改描述,不能修改 user 和 group 属性,如果需要修改关联角色,需要删除原来关联关系,新增关联角色。</p>
<h5 id="params-17">Params</h5>
<ul>
<li>id: 需要修改的关联角色 Id</li>
</ul>
<h5 id="method--url-18">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://localhost:8080/graphs/hugegraph/auth/belongs/S-63:boss&gt;-82&gt;&gt;S-69:grant
</code></pre><h5 id="request-body-7">Request Body</h5>
<p>修改belong_description</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;belong_description&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;update test&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status-18">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-18">Response Body</h5>
<p>返回结果是包含修改过的内容在内的整个用户组对象</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;belong_description&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;update test&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;belong_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-12 10:40:21.720&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;belong_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;belong_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-12 10:42:47.265&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S-63:boss&gt;-82&gt;&gt;S-69:grant&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-63:boss&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-69:grant&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="954-查询关联角色列表">9.5.4 查询关联角色列表</h4>
<h5 id="params-18">Params</h5>
<ul>
<li>limit: 返回结果条数的上限</li>
</ul>
<h5 id="method--url-19">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/auth/belongs
</code></pre><h5 id="response-status-19">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-19">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;belongs&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;belong_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 16:19:35.422&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;belong_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;belong_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 16:19:35.422&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S-63:boss&gt;-82&gt;&gt;S-69:all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-63:boss&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-69:all&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="955-查看某个关联角色">9.5.5 查看某个关联角色</h4>
<h5 id="params-19">Params</h5>
<ul>
<li>id: 需要查询的关联角色 Id</li>
</ul>
<h5 id="method--url-20">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/auth/belongs/S-63:boss&gt;-82&gt;&gt;S-69:all
</code></pre><h5 id="response-status-20">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-20">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;belong_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 16:19:35.422&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;belong_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;belong_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 16:19:35.422&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S-63:boss&gt;-82&gt;&gt;S-69:all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;user&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-63:boss&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-69:all&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h3 id="96-赋权accessapi">9.6 赋权(Access)API</h3>
<p>给用户组赋予资源的权限,主要包含:读操作(READ)、写操作(WRITE)、删除操作(DELETE)、执行操作(EXECUTE)等。<br>
赋权接口包括:赋权的创建、删除、修改和查询。</p>
<h4 id="961-创建赋权用户组赋予资源的权限">9.6.1 创建赋权(用户组赋予资源的权限)</h4>
<h5 id="params-20">Params</h5>
<ul>
<li>group: 用户组 Id</li>
<li>target: 资源 Id</li>
<li>access_permission: 权限许可</li>
<li>access_description: 赋权描述</li>
</ul>
<p>access_permission:</p>
<ul>
<li>READ:读操作,所有的查询,包括查询Schema、查顶点/边,查询顶点和边的数量VERTEX_AGGR/EDGE_AGGR,也包括读图的状态STATUS、变量VAR、任务TASK等;</li>
<li>WRITE:写操作,所有的创建、更新操作,包括给Schema增加property key,给顶点增加或更新属性等;</li>
<li>DELETE:删除操作,包括删除元数据、删除顶点/边;</li>
<li>EXECUTE:执⾏操作,包括执⾏Gremlin语句、执⾏Task、执⾏metadata函数;</li>
</ul>
<h5 id="request-body-8">Request Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-69:all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-77:all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;access_permission&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;READ&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="method--url-21">Method &amp; Url</h5>
<pre tabindex="0"><code>POST http://localhost:8080/graphs/hugegraph/auth/accesses
</code></pre><h5 id="response-status-21">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">201</span>
</span></span></code></pre></div><h5 id="response-body-21">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;access_permission&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;READ&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;access_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:54:54.008&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S-69:all&gt;-88&gt;11&gt;S-77:all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;access_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:54:54.008&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;access_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-69:all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-77:all&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="962-删除赋权">9.6.2 删除赋权</h4>
<h5 id="params-21">Params</h5>
<ul>
<li>id: 需要删除的赋权 Id</li>
</ul>
<h5 id="method--url-22">Method &amp; Url</h5>
<pre tabindex="0"><code>DELETE http://localhost:8080/graphs/hugegraph/auth/accesses/S-69:all&gt;-88&gt;12&gt;S-77:all
</code></pre><h5 id="response-status-22">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">204</span>
</span></span></code></pre></div><h5 id="response-body-22">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">1</span>
</span></span></code></pre></div><h4 id="963-修改赋权">9.6.3 修改赋权</h4>
<p>赋权只能修改描述,不能修改用户组、资源和权限许可,如果需要修改赋权的关系,可以删除原来的赋权关系,新增赋权。</p>
<h5 id="params-22">Params</h5>
<ul>
<li>id: 需要修改的赋权 Id</li>
</ul>
<h5 id="method--url-23">Method &amp; Url</h5>
<pre tabindex="0"><code>PUT http://localhost:8080/graphs/hugegraph/auth/accesses/S-69:all&gt;-88&gt;12&gt;S-77:all
</code></pre><h5 id="request-body-9">Request Body</h5>
<p>修改access_description</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;access_description&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;test&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="response-status-23">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-23">Response Body</h5>
<p>返回结果是包含修改过的内容在内的整个用户组对象</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;access_description&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;test&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;access_permission&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;WRITE&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;access_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-12 10:12:03.074&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S-69:all&gt;-88&gt;12&gt;S-77:all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;access_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-12 10:16:18.637&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;access_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-69:all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-77:all&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="964-查询赋权列表">9.6.4 查询赋权列表</h4>
<h5 id="params-23">Params</h5>
<ul>
<li>limit: 返回结果条数的上限</li>
</ul>
<h5 id="method--url-24">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/auth/accesses
</code></pre><h5 id="response-status-24">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-24">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;accesses&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;access_permission&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;READ&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;access_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:54:54.008&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S-69:all&gt;-88&gt;11&gt;S-77:all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;access_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:54:54.008&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;access_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-69:all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-77:all&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="965-查询某个赋权">9.6.5 查询某个赋权</h4>
<h5 id="params-24">Params</h5>
<ul>
<li>id: 需要查询的赋权 Id</li>
</ul>
<h5 id="method--url-25">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/hugegraph/auth/accesses/S-69:all&gt;-88&gt;11&gt;S-77:all
</code></pre><h5 id="response-status-25">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body-25">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;access_permission&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;READ&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;access_create&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:54:54.008&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;id&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;S-69:all&gt;-88&gt;11&gt;S-77:all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;access_update&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2020-11-11 15:54:54.008&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;access_creator&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;admin&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;group&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-69:all&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;target&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;-77:all&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-8e126d4f2f7317a1268d7edb65cd4fcc">5.1.16 - Other API</h1>
<h3 id="101-other">10.1 Other</h3>
<h4 id="1011-查看hugegraph的版本信息">10.1.1 查看HugeGraph的版本信息</h4>
<h5 id="method--url">Method &amp; Url</h5>
<pre tabindex="0"><code>GET http://localhost:8080/versions
</code></pre><h5 id="response-status">Response Status</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h5 id="response-body">Response Body</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;versions&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;version&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;v1&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;core&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;0.4.5.1&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;gremlin&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;3.2.5&#34;</span><span style="color:#000;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;api&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;0.13.2.0&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-3457a7585a93814fdbb1a44b68edc0d3">5.2 - HugeGraph Java Client</h1>
<p>The code in this document is written in <code>java</code>, but its style is very similar to <code>gremlin(groovy)</code>. The user only needs to replace the variable declaration in the code with <code>def</code> or remove it directly,
You can convert <code>java</code> code into <code>groovy</code>; in addition, each line of statement can be without a semicolon at the end, <code>groovy</code> considers a line to be a statement.
The <code>gremlin(groovy)</code> written by the user in <code>HugeGraph-Studio</code> can refer to the <code>java</code> code in this document, and some examples will be given below.</p>
<h3 id="1-hugegraph-client">1 HugeGraph-Client</h3>
<p>HugeGraph-Client is the general entry for operating graph. Users must first create a HugeGraph-Client object and establish a connection (pseudo connection) with HugeGraph-Server before they can obtain the operation entry objects of schema, graph and gremlin.</p>
<p>Currently, HugeGraph-Client only allows connections to existing graphs on the server, and cannot create custom graphs. Its creation method is as follows:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// HugeGraphServer address: &#34;http://localhost:8080&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Graph Name: &#34;hugegraph&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">HugeClient</span> <span style="color:#000">hugeClient</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">HugeClient</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">builder</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;http://localhost:8080&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;hugegraph&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">configTimeout</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">20</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#8f5902;font-style:italic">// 20s timeout
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">configUser</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;**&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;**&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#8f5902;font-style:italic">// enable auth
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">build</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span></code></pre></div><p>If the above process of creating HugeClient fails, an exception will be thrown, and the user needs to use try-catch. If successful, continue to get schema, graph and gremlin manager.</p>
<p>When operating through <code>gremlin</code> in <code>HugeGraph-Hubble</code>(or <code>HugeGraph-Studio</code>), <code>HugeClient</code> is not required and can be ignored.</p>
<h3 id="2-schema">2 Schema</h3>
<h4 id="21-schemamanager">2.1 SchemaManager</h4>
<p>SchemaManager is used to manage four kinds of schema in HugeGraph, namely PropertyKey (property type), VertexLabel (vertex type), EdgeLabel (edge type) and IndexLabel (index label). A SchemaManager object can be created for schema information definition.</p>
<p>The user can obtain the SchemaManager object using the following methods:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#000">SchemaManager</span> <span style="color:#000">schema</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">hugeClient</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">schema</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span></code></pre></div><p>Create a <code>schema</code> object via <code>gremlin</code> in <code>HugeGraph-Hubble</code>:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#000">schema</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">schema</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span></code></pre></div><p>The definition process of the 4 kinds of schema is described below.</p>
<h4 id="22-propertykey">2.2 PropertyKey</h4>
<h5 id="221-interface-and-parameter-introduction">2.2.1 Interface and parameter introduction</h5>
<p>PropertyKey is used to standardize the property constraints of vertices and edges, and properties of properties are not currently supported.</p>
<p>The constraint information that PropertyKey allows to define includes: name, datatype, cardinality, and userdata, which are introduced one by one below.</p>
<ul>
<li>name: The name of the property, used to distinguish different PropertyKeys, PropertyKeys with the same name are not allowed.</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>param</th>
<th>must set</th>
</tr>
</thead>
<tbody>
<tr>
<td>propertyKey(String name)</td>
<td>name</td>
<td>y</td>
</tr>
</tbody>
</table>
<ul>
<li>datatype: property value type, you must select an explicit setting from the following table that conforms to the specific business scenario:</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>Java Class</th>
</tr>
</thead>
<tbody>
<tr>
<td>asText()</td>
<td>String</td>
</tr>
<tr>
<td>asInt()</td>
<td>Integer</td>
</tr>
<tr>
<td>asDate()</td>
<td>Date</td>
</tr>
<tr>
<td>asUuid()</td>
<td>UUID</td>
</tr>
<tr>
<td>asBoolean()</td>
<td>Boolean</td>
</tr>
<tr>
<td>asByte()</td>
<td>Byte</td>
</tr>
<tr>
<td>asBlob()</td>
<td>Byte[]</td>
</tr>
<tr>
<td>asDouble()</td>
<td>Double</td>
</tr>
<tr>
<td>asFloat()</td>
<td>Float</td>
</tr>
<tr>
<td>asLong()</td>
<td>Long</td>
</tr>
</tbody>
</table>
<ul>
<li>cardinality: Whether the property value is single-valued or multi-valued, in the case of multi-valued, it is divided into allowing-duplicate values and not-allowing-duplicate values. This item is single by default. If necessary, you can select a setting from the following table:</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>cardinality</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>valueSingle()</td>
<td>single</td>
<td>single value</td>
</tr>
<tr>
<td>valueList()</td>
<td>list</td>
<td>multi-values that allow duplicate value</td>
</tr>
<tr>
<td>valueSet()</td>
<td>set</td>
<td>multi-values that not allow duplicate value</td>
</tr>
</tbody>
</table>
<ul>
<li>userdata: Users can add some constraints or additional information by themselves, and then check whether the incoming properties satisfy the constraints, or extract additional information when necessary:</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>userdata(String key, Object value)</td>
<td>The same key, the latter will cover the former</td>
</tr>
</tbody>
</table>
<h5 id="222-create-propertykey">2.2.2 Create PropertyKey</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">valueSet</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span></code></pre></div><p>The syntax of creating the above <code>PropertyKey</code> object through <code>gremlin</code> in <code>HugeGraph-Hubble</code> is exactly the same. If the user does not define the <code>schema</code> variable, it should be written like this:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">schema</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">valueSet</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span></code></pre></div><p>In the following examples, the syntax of <code>gremlin</code> and <code>java</code> is exactly the same, so we won&rsquo;t repeat them.</p>
<ul>
<li>ifNotExist(): Add a judgment mechanism for create, if the current PropertyKey already exists, it will not be created, otherwise the property will be created. If no ifNotExist() is added, an exception will be thrown if a properkey with the same name already exists. The same as below, and will not be repeated there.</li>
</ul>
<h5 id="223-delete-propertykey">2.2.3 Delete PropertyKey</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">remove</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span></code></pre></div><h5 id="224-query-propertykey">2.2.4 Query PropertyKey</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Get PropertyKey
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getPropertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Get attributes of PropertyKey
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getPropertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">cardinality</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getPropertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">dataType</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getPropertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">name</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getPropertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">userdata</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span></code></pre></div><h4 id="23-vertexlabel">2.3 VertexLabel</h4>
<h5 id="231-interface-and-parameter-introduction">2.3.1 Interface and parameter introduction</h5>
<p>VertexLabel is used to define the vertex type and describe the constraint information of the vertex.</p>
<p>The constraint information that VertexLabel allows to define include: name, idStrategy, properties, primaryKeys and nullableKeys, which are introduced one by one below.</p>
<ul>
<li>name: The name of the VertexLabel, used to distinguish different VertexLabels, VertexLabels with the same name are not allowed.</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>param</th>
<th>must set</th>
</tr>
</thead>
<tbody>
<tr>
<td>vertexLabel(String name)</td>
<td>name</td>
<td>y</td>
</tr>
</tbody>
</table>
<ul>
<li>idStrategy: Each VertexLabel can choose its own Id strategy. There are currently three strategies to choose from, namely Automatic (automatically generated), Customize (user input) and PrimaryKey (primary attribute key). Among them, Automatic uses the Snowflake algorithm to generate Id, Customize requires the user to pass in the Id of string or number type, and PrimaryKey allows the user to select several properties of VertexLabel as the basis for differentiation. HugeGraph will be spliced and generated Id according to the value of the primary properties. idStrategy uses Automatic by default, but if the user does not explicitly set idStrategy and calls the primaryKeys(&hellip;) method to set the primary property, then idStrategy will automatically use PrimaryKey.</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>idStrategy</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>useAutomaticId</td>
<td>AUTOMATIC</td>
<td>generate id automaticly by Snowflake algorithom</td>
</tr>
<tr>
<td>useCustomizeStringId</td>
<td>CUSTOMIZE_STRING</td>
<td>passed id by user, must be string type</td>
</tr>
<tr>
<td>useCustomizeNumberId</td>
<td>CUSTOMIZE_NUMBER</td>
<td>passed id by user, must be number type</td>
</tr>
<tr>
<td>usePrimaryKeyId</td>
<td>PRIMARY_KEY</td>
<td>choose some important prop as primary key to splice id</td>
</tr>
</tbody>
</table>
<ul>
<li>properties: define the properties of the vertex, the incoming parameter is the name of the PropertyKey.</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>properties(String&hellip; properties)</td>
<td>allow to pass multi properties</td>
</tr>
</tbody>
</table>
<ul>
<li>primaryKeys: When the user selects the Id strategy of PrimaryKey, several primary properties need to be selected from the properties of VertexLabel as the basis for differentiation;</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>primaryKeys(String&hellip; keys)</td>
<td>allow to choose multi prop as primaryKeys</td>
</tr>
</tbody>
</table>
<p>Note that the selection of the Id strategy and the setting of primaryKeys have some mutual constraints, which cannot be called at will. The constraints are shown in the following table:</p>
<table>
<thead>
<tr>
<th></th>
<th>useAutomaticId</th>
<th>useCustomizeStringId</th>
<th>useCustomizeNumberId</th>
<th>usePrimaryKeyId</th>
</tr>
</thead>
<tbody>
<tr>
<td>unset primaryKeys</td>
<td>AUTOMATIC</td>
<td>CUSTOMIZE_STRING</td>
<td>CUSTOMIZE_NUMBER</td>
<td>ERROR</td>
</tr>
<tr>
<td>set primaryKeys</td>
<td>ERROR</td>
<td>ERROR</td>
<td>ERROR</td>
<td>PRIMARY_KEY</td>
</tr>
</tbody>
</table>
<ul>
<li>nullableKeys: For properties set by the properties(&hellip;) method, all of them are non-nullable by default, that is, the property must be assigned a value when creating a vertex, which may impose too strict integrity requirements on user data. In order to avoid such strong constraints, the user can set some properties to be nullable through this method, so that the properties can be unassigned when adding vertices.</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>nullableKeys(String&hellip; properties)</td>
<td>allow to pass multi props</td>
</tr>
</tbody>
</table>
<p>Note: primaryKeys and nullableKeys cannot intersect, because a property cannot be both primary and nullable.</p>
<ul>
<li>enableLabelIndex: The user can specify whether to create an index for the label. If you don&rsquo;t create it, you can&rsquo;t globally search for the vertices and edges of the specified label. If you create it, you can search globally, like <code>g.V().hasLabel('person'), g.E().has('label', 'person')</code> query, but the performance will be slower when inserting data, and it will take up more storage space. This defaults to true.</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>enableLabelIndex(boolean enable)</td>
<td>Whether to create a label index</td>
</tr>
</tbody>
</table>
<ul>
<li>userdata: Users can add some constraints or additional information by themselves, and then check whether the incoming properties meet the constraints, or extract additional information when necessary.</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>userdata(String key, Object value)</td>
<td>The same key, the latter will cover the former</td>
</tr>
</tbody>
</table>
<h5 id="232-create-vertexlabel">2.3.2 Create VertexLabel</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Use Automatic Id strategy
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">useAutomaticId</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Use Customize_String Id strategy
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">useCustomizeStringId</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Use Customize_Number Id strategy
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">useCustomizeNumberId</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Use PrimaryKey Id strategy
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">usePrimaryKeyId</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span></code></pre></div><h5 id="233-update-vertexlabel">2.3.3 Update VertexLabel</h5>
<p>VertexLabel can append constraints, but only properties and nullableKeys, and the appended properties must also be added to the nullableKeys collection.</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">nullableKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">append</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span></code></pre></div><h5 id="234-delete-vertexlabel">2.3.4 Delete VertexLabel</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">remove</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span></code></pre></div><h5 id="235-query-vertexlabel">2.3.5 Query VertexLabel</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Get VertexLabel
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getVertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Get attributes of VertexLabel
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getVertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">idStrategy</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getVertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getVertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">name</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getVertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getVertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">nullableKeys</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getVertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">userdata</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span></code></pre></div><h4 id="24-edgelabel">2.4 EdgeLabel</h4>
<h5 id="241-interface-and-parameter-introduction">2.4.1 Interface and parameter introduction</h5>
<p>EdgeLabel is used to define the edge type and describe the constraint information of the edge.</p>
<p>The constraint information that EdgeLabel allows to define include: name, sourceLabel, targetLabel, frequency, properties, sortKeys and nullableKeys, which are introduced one by one below.</p>
<ul>
<li>name: The name of the EdgeLabel, used to distinguish different EdgeLabels, EdgeLabels with the same name are not allowed.</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>param</th>
<th>must set</th>
</tr>
</thead>
<tbody>
<tr>
<td>edgeLabel(String name)</td>
<td>name</td>
<td>y</td>
</tr>
</tbody>
</table>
<ul>
<li>
<p>sourceLabel: The name of the source vertex type of the edge link, only one is allowed;</p>
</li>
<li>
<p>targetLabel: The name of the target vertex type of the edge link, only one is allowed;</p>
</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>param</th>
<th>must set</th>
</tr>
</thead>
<tbody>
<tr>
<td>sourceLabel(String label)</td>
<td>label</td>
<td>y</td>
</tr>
<tr>
<td>targetLabel(String label)</td>
<td>label</td>
<td>y</td>
</tr>
</tbody>
</table>
<ul>
<li>frequency: Indicating the number of times a relationship occurs between two specific vertices, which can be single (single) or multiple (frequency), the default is single.</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>frequency</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>singleTime()</td>
<td>single</td>
<td>a relationship can only occur once</td>
</tr>
<tr>
<td>multiTimes()</td>
<td>multiple</td>
<td>a relationship can occur many times</td>
</tr>
</tbody>
</table>
<ul>
<li>properties: Define the properties of the edge.</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>properties(String&hellip; properties)</td>
<td>allow to pass multi props</td>
</tr>
</tbody>
</table>
<ul>
<li>sortKeys: When the frequency of EdgeLabel is multiple, some properties are needed to distinguish the multiple relationships, so sortKeys (sorted keys) is introduced;</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>sortKeys(String&hellip; keys)</td>
<td>allow to choose multi prop as sortKeys</td>
</tr>
</tbody>
</table>
<ul>
<li>nullableKeys: Consistent with the concept of nullableKeys in vertices.</li>
</ul>
<p>Note: sortKeys and nullableKeys also cannot intersect.</p>
<ul>
<li>
<p>enableLabelIndex: It is consistent with the concept of enableLabelIndex in the vertex.</p>
</li>
<li>
<p>userdata: Users can add some constraints or additional information by themselves, and then check whether the incoming properties meet the constraints, or extract additional information when necessary.</p>
</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>userdata(String key, Object value)</td>
<td>The same key, the latter will cover the former</td>
</tr>
</tbody>
</table>
<h5 id="242-create-edgelabel">2.4.2 Create EdgeLabel</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">link</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">multiTimes</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">link</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">sortKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span></code></pre></div><h5 id="243-update-edgelabel">2.4.3 Update EdgeLabel</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">nullableKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">append</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span></code></pre></div><h5 id="244-delete-edgelabel">2.4.4 Delete EdgeLabel</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">remove</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span></code></pre></div><h5 id="245-qeury-edgelabel">2.4.5 Qeury EdgeLabel</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Get EdgeLabel
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getEdgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Get attributes of EdgeLabel
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getEdgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">frequency</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getEdgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">sourceLabel</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getEdgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">targetLabel</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getEdgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">sortKeys</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getEdgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">name</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getEdgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getEdgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">nullableKeys</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getEdgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">userdata</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span></code></pre></div><h4 id="25-indexlabel">2.5 IndexLabel</h4>
<h5 id="251-interface-and-parameter-introduction">2.5.1 Interface and parameter introduction</h5>
<p>IndexLabel is used to define the index type and describe the constraint information of the index, mainly for the convenience of query.</p>
<p>The constraint information that IndexLabel allows to define include: name, baseType, baseValue, indexFeilds, indexType, which are introduced one by one below.</p>
<ul>
<li>name: The name of the IndexLabel, used to distinguish different IndexLabels, IndexLabels with the same name are not allowed.</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>param</th>
<th>must set</th>
</tr>
</thead>
<tbody>
<tr>
<td>indexLabel(String name)</td>
<td>name</td>
<td>y</td>
</tr>
</tbody>
</table>
<ul>
<li>
<p>baseType: Indicates whether to index VertexLabel or EdgeLabel, used in conjunction with the baseValue below.</p>
</li>
<li>
<p>baseValue: Specifies the name of the VertexLabel or EdgeLabel to be indexed.</p>
</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>param</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>onV(String baseValue)</td>
<td>baseValue</td>
<td>build index for VertexLabel: &lsquo;baseValue&rsquo;</td>
</tr>
<tr>
<td>onE(String baseValue)</td>
<td>baseValue</td>
<td>build index for EdgeLabel: &lsquo;baseValue&rsquo;</td>
</tr>
</tbody>
</table>
<ul>
<li>indexFields: on which fields to index, it can be a joint index for multiple columns.</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>param</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>by(String&hellip; fields)</td>
<td>files</td>
<td>allow to build index for multi fields for secondary index</td>
</tr>
</tbody>
</table>
<ul>
<li>indexType: There are currently five types of indexes established, namely Secondary, Range, Search, Shard and Unique.
<ul>
<li>Secondary Index supports exact matching secondary index, allow to build joint index, joint index supports index prefix search
<ul>
<li>Single Property Secondary Index, support equality query, for example: the secondary index of the city property of the person vertex, you can use <code>g.V().has(&quot;city&quot;, &quot;Beijing&quot;)</code> to query all the vertices with &ldquo;city attribute value is Beijing&rdquo;</li>
<li>Joint Secondary Index, supports prefix query and equality query, such as: joint index of city and street properties of person vertex, you can use <code>g.V().has(&quot;city&quot;, &quot;Beijing&quot;).has('street', 'Zhongguancun street ')</code> to query all vertices of &ldquo;city property value is Beijing and street property value is Zhongguancun&rdquo;, or <code>g.V().has(&quot;city&quot;, &quot;Beijing&quot;)</code> to query all vertices of &ldquo;city property value is Beijing&rdquo;.</li>
</ul>
<blockquote>
<p>The query of Secondary Index is based on the query condition of &ldquo;yes&rdquo; or &ldquo;equal&rdquo;, and does not support &ldquo;partial matching&rdquo;.</p>
</blockquote>
</li>
<li>Range Index supports for range queries of numeric types
<ul>
<li>Must be a single number or date attribute, for example: the range index of the age property of the person vertex, you can use <code>g.V().has(&quot;age&quot;, P.gt(18))</code> to query the vertices with &ldquo;age property value greater than 18&rdquo; . In addition to <code>P.gt()</code>, also supports <code>P.gte()</code>, <code>P.lte()</code>, <code>P.lt()</code>, <code>P.eq()</code>, <code>P.between() </code>, <code>P.inside()</code> and <code>P.outside()</code> etc.</li>
</ul>
</li>
<li>Search Index supports full-text search
<ul>
<li>It must be a single text property, such as: full-text index of the address property of the person vertex, you can use <code>g.V().has(&quot;address&quot;, Text.contains('building')</code> to query all vertices whose &ldquo;address property contains a &lsquo;building&rsquo;&rdquo;</li>
</ul>
<blockquote>
<p>The query of the Search Index is based on the query condition of &ldquo;is&rdquo; or &ldquo;contains&rdquo;.</p>
</blockquote>
</li>
<li>Shard Index supports prefix matching + numeric range query
<ul>
<li>The shard index of N properties supports range queries with equal prefixes. For example, the shard index of the city and age properties of the person vertex can use <code>g.V().has(&quot;city&quot;, &quot;Beijing&quot;).has (&quot;age&quot;, P.between(18, 30))</code>Query &ldquo;city property is Beijing and all vertices whose age is greater than or equal to 18 and less than 30&rdquo;.</li>
<li>When all N properties are text properties in a Shard Index, it is equivalent to Secondary Index.</li>
<li>When there is only one single number or date property in a Shard Index, it is equivalent to the Range Index.</li>
</ul>
<blockquote>
<p>Shard Index can have any number or date property, but at most one range search condition can be provided when querying, and the prefix properties of the Shard Search conditions must be &ldquo;equals&rdquo;.</p>
</blockquote>
</li>
<li>Unique Index supports properties uniqueness constraints, that is, the value of properties can be limited to not repeat, and joint indexing is allowed, but querying is not supported now
<ul>
<li>The unique index of single or multiple properties cannot be used for query, only the value of the property can be limited, and an error will be reported when there is a duplicate value.</li>
</ul>
</li>
</ul>
</li>
</ul>
<table>
<thead>
<tr>
<th>interface</th>
<th>indexType</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>secondary()</td>
<td>Secondary</td>
<td>support prefix search</td>
</tr>
<tr>
<td>range()</td>
<td>Range</td>
<td>support range(numeric or date type) search</td>
</tr>
<tr>
<td>search()</td>
<td>Search</td>
<td>support full text search</td>
</tr>
<tr>
<td>shard()</td>
<td>Shard</td>
<td>support prefix + range(numeric or date type) search</td>
</tr>
<tr>
<td>unique()</td>
<td>Unique</td>
<td>support unique props value, not support search</td>
</tr>
</tbody>
</table>
<h5 id="252-create-indexlabel">2.5.2 Create IndexLabel</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByAge&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onV</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">range</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;createdByDate&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onE</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">secondary</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByLived&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onE</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;lived&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">search</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByCityAndAge&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onV</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">shard</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personById&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onV</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;id&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">unique</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span></code></pre></div><h5 id="253-delete-indexlabel">2.5.3 Delete IndexLabel</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByAge&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">remove</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span></code></pre></div><h5 id="254-query-indexlabel">2.5.4 Query IndexLabel</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Get IndexLabel
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getIndexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByAge&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Get attributes of IndexLabel
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getIndexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByAge&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">baseType</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getIndexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByAge&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">baseValue</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getIndexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByAge&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">indexFields</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getIndexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByAge&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">indexType</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getIndexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByAge&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">name</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span></code></pre></div><h3 id="3-graph">3 Graph</h3>
<h4 id="31-vertex">3.1 Vertex</h4>
<p>Vertices are the most basic elements of a graph, and there can be many vertices in a graph. Here is an example of adding vertices:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#000">Vertex</span> <span style="color:#000">marko</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;marko&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">29</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span><span style="color:#000">Vertex</span> <span style="color:#000">lop</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;lop&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">328</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span></code></pre></div><ul>
<li>The key to adding vertices is the vertex properties. The number of parameters of the vertex adding function must be an even number and satisfy the order of <code>key1 -&gt; val1, key2 -&gt; val2 ...</code>, and the order between key-value pairs is free .</li>
<li>The parameter must contain a special key-value pair, namely <code>T.label -&gt; &quot;val&quot;</code>, which is used to define the category of the vertex, so that the program can obtain the schema definition of the VertexLabel from the cache or backend, and then do subsequent constraint checks. The label in the example is defined as person.</li>
<li>If the vertex type&rsquo;s Id policy is <code>AUTOMATIC</code>, users are not allowed to pass in id key-value pairs.</li>
<li>If the Id policy of the vertex type is <code>CUSTOMIZE_STRING</code>, the user needs to pass in the value of the id of the String type. The key-value pair is like: <code>&quot;T.id&quot;, &quot;123456&quot;</code>.</li>
<li>If the Id policy of the vertex type is <code>CUSTOMIZE_NUMBER</code>, the user needs to pass in the value of the id of the Number type. The key-value pair is like: <code>&quot;T.id&quot;, 123456</code>.</li>
<li>If the Id policy of the vertex type is <code>PRIMARY_KEY</code>, the parameters must also contain the name and value of the properties corresponding to the <code>primaryKeys</code>, if not set an exception will be thrown. For example, the <code>primaryKeys</code> of <code>person</code> is <code>name</code>, in the example, the value of <code>name</code> is set to <code>marko</code>.</li>
<li>For properties that are not nullableKeys, a value must be assigned.</li>
<li>The remaining parameters are the settings of other properties of the vertex, but they are not required.</li>
<li>After calling the <code>addVertex</code> method, the vertices are inserted into the backend storage system immediately.</li>
</ul>
<h4 id="32-edge">3.2 Edge</h4>
<p>After added vertices, edges are also needed to form a complete graph. Here is an example of adding edges:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#000">Edge</span> <span style="color:#000">knows1</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">vadas</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span></code></pre></div><ul>
<li>The function <code>addEdge()</code> of the (source) vertex is to add a edge(relationship) between itself and another vertex. The first parameter of the function is the label of the edge, and the second parameter is the target vertex. The position and order of these two parameters are fixed. The subsequent parameters are the order of <code>key1 -&gt; val1, key2 -&gt; val2 ...</code>, set the properties of the edge, and the key-value pair order is free.</li>
<li>The source and target vertices must conform to the definitions of sourcelabel and targetlabel in EdgeLabel, and cannot be added arbitrarily.</li>
<li>For properties that are not nullableKeys, a value must be assigned.</li>
</ul>
<p><strong>Note: When frequency is multiple, the value of the property type corresponding to sortKeys must be set.</strong></p>
<h3 id="4-examples">4 Examples</h3>
<p>Simple examples can reference <a href="/docs/quickstart/hugegraph-client">HugeGraph-Client</a></p>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-1ebf9ecb86d8a6b8536fd581e696ce8c">5.3 - Gremlin-Console</h1>
<p>Gremlin-Console是由Tinkerpop自己开发的一个交互式客户端,用户可以使用该客户端对Graph做各种操作,主要有两种使用模式:</p>
<ul>
<li>单机离线调用模式;</li>
<li>Client/Server请求模式;</li>
</ul>
<h3 id="1-单机离线调用模式">1 单机离线调用模式</h3>
<p>由于lib目录下已经包含了HugeCore的jar包,且HugeGraph已经作为插件注册到Console中,用户可以直接写groovy脚本调用HugeGraph-Core的代码,然后交由Gremlin-Console内的解析引擎执行,就能在不启动Server的情况下操作图。</p>
<p>这种模式便于用户快速上手体验,但是不适合大量数据插入和查询的场景。下面给一个示例:</p>
<p>在script目录下有一个示例脚本:example.groovy</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">com.baidu.hugegraph.HugeFactory</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">com.baidu.hugegraph.dist.RegisterUtil</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">org.apache.tinkerpop.gremlin.structure.T</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#000">RegisterUtil</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">registerCassandra</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">RegisterUtil</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">registerScyllaDB</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#000">conf</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#4e9a06">&#34;conf/hugegraph.properties&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000">graph</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">HugeFactory</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">open</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">conf</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">schema</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asInt</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asDouble</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asInt</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByName&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onV</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">secondary</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByCity&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onV</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">secondary</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;personByAgeAndCity&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onV</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">secondary</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;softwareByPrice&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onV</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">range</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">sourceLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">targetLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">sourceLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">targetLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;createdByDate&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onE</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">secondary</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;createdByWeight&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onE</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">range</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knowsByWeight&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">onE</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">range</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#000">marko</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;marko&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">29</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span><span style="color:#000">vadas</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;vadas&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">27</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Hongkong&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span><span style="color:#000">lop</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;lop&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">328</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span><span style="color:#000">josh</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;josh&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">32</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span><span style="color:#000">ripple</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;software&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;ripple&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;lang&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;price&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">199</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span><span style="color:#000">peter</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;peter&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">35</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Shanghai&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">vadas</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;20160110&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">0.5</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span><span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;knows&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;20130220&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">1.0</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span><span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;20171210&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">0.4</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span><span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;20091111&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">0.4</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span><span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">ripple</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;20171210&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">1.0</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span><span style="color:#000">peter</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;date&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;20170324&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;weight&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">0.2</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">tx</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">commit</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#000">g</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">traversal</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;&gt;&gt;&gt;&gt; query all vertices: size=&#34;</span> <span style="color:#ce5c00;font-weight:bold">+</span> <span style="color:#000">g</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">V</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">toList</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">size</span><span style="color:#ce5c00;font-weight:bold">());</span>
</span></span><span style="display:flex;"><span><span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;&gt;&gt;&gt;&gt; query all edges: size=&#34;</span> <span style="color:#ce5c00;font-weight:bold">+</span> <span style="color:#000">g</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">E</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">toList</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">size</span><span style="color:#ce5c00;font-weight:bold">());</span>
</span></span></code></pre></div><p>其实这一段groovy脚本几乎就是Java代码,不同之处仅在于变量的定义可以不写类型声明,以及每一行末尾的分号可以去掉。</p>
<blockquote>
<p>g.V() 是获取所有的顶点,g.E() 是获取所有的边,toList() 是把结果存到一个 List 中,参考<a href="http://tinkerpop.apache.org/docs/current/reference/#terminal-steps">TinkerPop Terminal Steps</a></p>
</blockquote>
<p>下面进入gremlin-console,并传入该脚本令其执行:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>bin/gremlin-console.sh scripts/example.groovy
</span></span><span style="display:flex;"><span>objc<span style="color:#ce5c00;font-weight:bold">[</span>5038<span style="color:#ce5c00;font-weight:bold">]</span>: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java <span style="color:#ce5c00;font-weight:bold">(</span>0x10137a4c0<span style="color:#ce5c00;font-weight:bold">)</span> and /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/libinstrument.dylib <span style="color:#ce5c00;font-weight:bold">(</span>0x102bbb4e0<span style="color:#ce5c00;font-weight:bold">)</span>. One of the two will be used. Which one is undefined.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">\,</span>,,/
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">(</span>o o<span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span>-----oOOo-<span style="color:#ce5c00;font-weight:bold">(</span>3<span style="color:#ce5c00;font-weight:bold">)</span>-oOOo-----
</span></span><span style="display:flex;"><span>plugin activated: com.baidu.hugegraph
</span></span><span style="display:flex;"><span>plugin activated: tinkerpop.server
</span></span><span style="display:flex;"><span>plugin activated: tinkerpop.utilities
</span></span><span style="display:flex;"><span>plugin activated: tinkerpop.tinkergraph
</span></span><span style="display:flex;"><span>2018-01-15 14:36:19 <span style="color:#0000cf;font-weight:bold">7516</span> <span style="color:#ce5c00;font-weight:bold">[</span>main<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>WARN <span style="color:#ce5c00;font-weight:bold">]</span> com.baidu.hugegraph.config.HugeConfig <span style="color:#ce5c00;font-weight:bold">[]</span> - The config option <span style="color:#4e9a06">&#39;rocksdb.data_path&#39;</span> is redundant, please ensure it has been registered
</span></span><span style="display:flex;"><span>2018-01-15 14:36:19 <span style="color:#0000cf;font-weight:bold">7523</span> <span style="color:#ce5c00;font-weight:bold">[</span>main<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>WARN <span style="color:#ce5c00;font-weight:bold">]</span> com.baidu.hugegraph.config.HugeConfig <span style="color:#ce5c00;font-weight:bold">[]</span> - The config option <span style="color:#4e9a06">&#39;rocksdb.wal_path&#39;</span> is redundant, please ensure it has been registered
</span></span><span style="display:flex;"><span>2018-01-15 14:36:19 <span style="color:#0000cf;font-weight:bold">7604</span> <span style="color:#ce5c00;font-weight:bold">[</span>main<span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span>INFO <span style="color:#ce5c00;font-weight:bold">]</span> com.baidu.hugegraph.HugeGraph <span style="color:#ce5c00;font-weight:bold">[]</span> - Opening backend store <span style="color:#4e9a06">&#39;cassandra&#39;</span> <span style="color:#204a87;font-weight:bold">for</span> graph <span style="color:#4e9a06">&#39;hugegraph&#39;</span>
</span></span><span style="display:flex;"><span>&gt;&gt;&gt;&gt; query all vertices: <span style="color:#000">size</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#0000cf;font-weight:bold">6</span>
</span></span><span style="display:flex;"><span>&gt;&gt;&gt;&gt; query all edges: <span style="color:#000">size</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#0000cf;font-weight:bold">6</span>
</span></span></code></pre></div><p>可以看到,插入了6个顶点、6条边,并查询出来了。进入console之后,还可继续输入groovy语句对图做操作:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#000">gremlin</span><span style="color:#ce5c00;font-weight:bold">&gt;</span> <span style="color:#000">g</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">V</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#000">v</span><span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#0000cf;font-weight:bold">2</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">ripple</span><span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#000">v</span><span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">vadas</span><span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#000">v</span><span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">peter</span><span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#000">v</span><span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#000">v</span><span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#000">v</span><span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#0000cf;font-weight:bold">2</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#000">gremlin</span><span style="color:#ce5c00;font-weight:bold">&gt;</span> <span style="color:#000">g</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">E</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#000">e</span><span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#f57900">S1:</span><span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">&gt;</span><span style="color:#0000cf;font-weight:bold">2</span><span style="color:#ce5c00;font-weight:bold">&gt;&gt;</span><span style="color:#f57900">S2:</span><span style="color:#000">ripple</span><span style="color:#ce5c00;font-weight:bold">][</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">-</span><span style="color:#000">created</span><span style="color:#ce5c00;font-weight:bold">-&gt;</span><span style="color:#0000cf;font-weight:bold">2</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">ripple</span><span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#000">e</span><span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#f57900">S1:</span><span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">&gt;</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">&gt;</span><span style="color:#0000cf;font-weight:bold">20160110</span><span style="color:#ce5c00;font-weight:bold">&gt;</span><span style="color:#f57900">S1:</span><span style="color:#000">vadas</span><span style="color:#ce5c00;font-weight:bold">][</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">-</span><span style="color:#000">knows</span><span style="color:#ce5c00;font-weight:bold">-&gt;</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">vadas</span><span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#000">e</span><span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#f57900">S1:</span><span style="color:#000">peter</span><span style="color:#ce5c00;font-weight:bold">&gt;</span><span style="color:#0000cf;font-weight:bold">2</span><span style="color:#ce5c00;font-weight:bold">&gt;&gt;</span><span style="color:#f57900">S2:</span><span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">][</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">peter</span><span style="color:#ce5c00;font-weight:bold">-</span><span style="color:#000">created</span><span style="color:#ce5c00;font-weight:bold">-&gt;</span><span style="color:#0000cf;font-weight:bold">2</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#000">e</span><span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#f57900">S1:</span><span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">&gt;</span><span style="color:#0000cf;font-weight:bold">2</span><span style="color:#ce5c00;font-weight:bold">&gt;&gt;</span><span style="color:#f57900">S2:</span><span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">][</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">-</span><span style="color:#000">created</span><span style="color:#ce5c00;font-weight:bold">-&gt;</span><span style="color:#0000cf;font-weight:bold">2</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#000">e</span><span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#f57900">S1:</span><span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">&gt;</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">&gt;</span><span style="color:#0000cf;font-weight:bold">20130220</span><span style="color:#ce5c00;font-weight:bold">&gt;</span><span style="color:#f57900">S1:</span><span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">][</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">-</span><span style="color:#000">knows</span><span style="color:#ce5c00;font-weight:bold">-&gt;</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#000">e</span><span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#f57900">S1:</span><span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">&gt;</span><span style="color:#0000cf;font-weight:bold">2</span><span style="color:#ce5c00;font-weight:bold">&gt;&gt;</span><span style="color:#f57900">S2:</span><span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">][</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">-</span><span style="color:#000">created</span><span style="color:#ce5c00;font-weight:bold">-&gt;</span><span style="color:#0000cf;font-weight:bold">2</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">]</span>
</span></span></code></pre></div><p>更多的Gremlin语句请参考<a href="http://tinkerpop.apache.org/docs/current/reference/">Tinkerpop官网</a></p>
<h3 id="2-clientserver请求模式">2 Client/Server请求模式</h3>
<p>因为Gremlin-Console只能通过WebSocket连接HugeGraph-Server,默认HugeGraph-Server是对外提供HTTP连接的,所以先修改gremlin-server的配置。</p>
<p><em>注意:将连接方式修改为WebSocket后,HugeGraph-Client、HugeGraph-Loader、HugeGraph-Studio等配套工具都不能使用了。</em></p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># vim conf/gremlin-server.yaml</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">host</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">127.0.0.1</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">port</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">8182</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">scriptEvaluationTimeout</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">30000</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#8f5902;font-style:italic"># If you want to start gremlin-server for gremlin-console(web-socket),</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#8f5902;font-style:italic"># please change `HttpChannelizer` to `WebSocketChannelizer` or comment this line.</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">channelizer</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">org.apache.tinkerpop.gremlin.server.channel.HttpChannelizer</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">graphs</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">hugegraph</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">conf/hugegraph.properties,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">hugegraph1</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">conf/hugegraph1.properties</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">plugins</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#000">com.baidu.hugegraph</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">scriptEngines</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">gremlin-groovy</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">imports</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">java.lang.Math],</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">staticImports</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">java.lang.Math.PI],</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">scripts</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">scripts/empty-sample.groovy]</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">serializers</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- {<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">className</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">config</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">serializeResultToString</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ioRegistries</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">com.baidu.hugegraph.io.HugeGraphIoRegistry]</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- {<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">className</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">config</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">serializeResultToString</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ioRegistries</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">com.baidu.hugegraph.io.HugeGraphIoRegistry]</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- {<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">className</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">config</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">serializeResultToString</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ioRegistries</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">com.baidu.hugegraph.io.HugeGraphIoRegistry]</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- {<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">className</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">config</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">serializeResultToString</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ioRegistries</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">com.baidu.hugegraph.io.HugeGraphIoRegistry]</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- {<span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">className</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">config</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">serializeResultToString</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">false</span><span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ioRegistries</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">com.baidu.hugegraph.io.HugeGraphIoRegistry]</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">metrics</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">consoleReporter</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#204a87;font-weight:bold">enabled: false, interval</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">180000</span>}<span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">csvReporter</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#204a87;font-weight:bold">enabled: true, interval: 180000, fileName</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">/tmp/gremlin-server-metrics.csv},</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">jmxReporter</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#204a87;font-weight:bold">enabled</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">false</span>}<span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">slf4jReporter</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#204a87;font-weight:bold">enabled: false, interval</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">180000</span>}<span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">gangliaReporter</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#204a87;font-weight:bold">enabled: false, interval: 180000, addressingMode</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">MULTICAST},</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">graphiteReporter</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#204a87;font-weight:bold">enabled: false, interval</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">180000</span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">maxInitialLineLength</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">4096</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">maxHeaderSize</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">8192</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">maxChunkSize</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">8192</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">maxContentLength</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">65536</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">maxAccumulationBufferComponents</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">1024</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">resultIterationBatchSize</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">64</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">writeBufferLowWaterMark</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">32768</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">writeBufferHighWaterMark</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">65536</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">ssl</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">enabled</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">false</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span></code></pre></div><p><code>channelizer: org.apache.tinkerpop.gremlin.server.channel.HttpChannelizer</code>修改成<code>channelizer: org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer</code>或直接注释,然后按照步骤启动Server。</p>
<p>然后进入gremlin-console</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>bin/gremlin-console.sh
</span></span><span style="display:flex;"><span>objc<span style="color:#ce5c00;font-weight:bold">[</span>5761<span style="color:#ce5c00;font-weight:bold">]</span>: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java <span style="color:#ce5c00;font-weight:bold">(</span>0x10ec584c0<span style="color:#ce5c00;font-weight:bold">)</span> and /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/libinstrument.dylib <span style="color:#ce5c00;font-weight:bold">(</span>0x10ecdc4e0<span style="color:#ce5c00;font-weight:bold">)</span>. One of the two will be used. Which one is undefined.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">\,</span>,,/
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">(</span>o o<span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span>-----oOOo-<span style="color:#ce5c00;font-weight:bold">(</span>3<span style="color:#ce5c00;font-weight:bold">)</span>-oOOo-----
</span></span><span style="display:flex;"><span>plugin activated: com.baidu.hugegraph
</span></span><span style="display:flex;"><span>plugin activated: tinkerpop.server
</span></span><span style="display:flex;"><span>plugin activated: tinkerpop.utilities
</span></span><span style="display:flex;"><span>plugin activated: tinkerpop.tinkergraph
</span></span></code></pre></div><p>连接server,需在配置文件中指定连接参数,在conf目录下有一个默认的remote.yaml</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># cat conf/remote.yaml</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">hosts</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">localhost]</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">port</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">8182</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">serializer</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">className</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">config</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span>{<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">serializeResultToString</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">true</span><span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ioRegistries</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">com.baidu.hugegraph.io.HugeGraphIoRegistry]</span><span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span>}<span style="color:#f8f8f8;text-decoration:underline">
</span></span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#000">gremlin</span><span style="color:#ce5c00;font-weight:bold">&gt;</span> <span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">remote</span> <span style="color:#000">connect</span> <span style="color:#000">tinkerpop</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">server</span> <span style="color:#000">conf</span><span style="color:#4e9a06">/remote.yaml
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">2018-01-15 15:30:31 11528 [main] [INFO ] org.apache.tinkerpop.gremlin.driver.Connection [] - Created new connection for ws://localhost:8182/</span><span style="color:#000">gremlin</span>
</span></span><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">2018</span><span style="color:#ce5c00;font-weight:bold">-</span><span style="color:#0000cf;font-weight:bold">01</span><span style="color:#ce5c00;font-weight:bold">-</span><span style="color:#0000cf;font-weight:bold">15</span> <span style="color:#0000cf;font-weight:bold">15</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">30</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">31</span> <span style="color:#0000cf;font-weight:bold">11538</span> <span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#000">main</span><span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#000">INFO</span> <span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#000">org</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">apache</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">tinkerpop</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">gremlin</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">driver</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">Connection</span> <span style="color:#ce5c00;font-weight:bold">[]</span> <span style="color:#ce5c00;font-weight:bold">-</span> <span style="color:#000">Created</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">connection</span> <span style="color:#204a87;font-weight:bold">for</span> <span style="color:#f57900">ws:</span><span style="color:#8f5902;font-style:italic">//localhost:8182/gremlin
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#0000cf;font-weight:bold">2018</span><span style="color:#ce5c00;font-weight:bold">-</span><span style="color:#0000cf;font-weight:bold">01</span><span style="color:#ce5c00;font-weight:bold">-</span><span style="color:#0000cf;font-weight:bold">15</span> <span style="color:#0000cf;font-weight:bold">15</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">30</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">31</span> <span style="color:#0000cf;font-weight:bold">11538</span> <span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#000">main</span><span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#000">INFO</span> <span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#000">org</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">apache</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">tinkerpop</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">gremlin</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">driver</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">ConnectionPool</span> <span style="color:#ce5c00;font-weight:bold">[]</span> <span style="color:#ce5c00;font-weight:bold">-</span> <span style="color:#000">Opening</span> <span style="color:#000">connection</span> <span style="color:#000">pool</span> <span style="color:#000">on</span> <span style="color:#000">Host</span><span style="color:#ce5c00;font-weight:bold">{</span><span style="color:#000">address</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">localhost</span><span style="color:#4e9a06">/127.0.0.1:8182, hostUri=ws://localhost:8182/</span><span style="color:#000">gremlin</span><span style="color:#ce5c00;font-weight:bold">}</span> <span style="color:#000">with</span> <span style="color:#000">core</span> <span style="color:#000">size</span> <span style="color:#000">of</span> <span style="color:#0000cf;font-weight:bold">2</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#000">Configured</span> <span style="color:#000">localhost</span><span style="color:#ce5c00;font-weight:bold">/</span><span style="color:#0000cf;font-weight:bold">127.0</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#0000cf;font-weight:bold">0.1</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">8182</span>
</span></span></code></pre></div><p>连接成功之后,在console的上下文中能使用的变量只有hugegraph和hugegraph1两个图对象(在gremlin-server.yaml中配置),如果想拥有更多的变量,可以在<code>scripts/empty-sample.groovy</code>中添加,如:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">org.apache.tinkerpop.gremlin.server.util.LifeCycleHook</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// an init script that returns a Map allows explicit setting of global bindings.
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#204a87;font-weight:bold">def</span> <span style="color:#000">globals</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#ce5c00;font-weight:bold">[:]</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// defines a sample LifeCycleHook that prints some output to the Gremlin Server console.
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// note that the name of the key in the &#34;global&#34; map is unimportant.
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">globals</span> <span style="color:#ce5c00;font-weight:bold">&lt;&lt;</span> <span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#f57900">hook:</span> <span style="color:#ce5c00;font-weight:bold">[</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">onStartUp</span> <span style="color:#ce5c00;font-weight:bold">:</span> <span style="color:#ce5c00;font-weight:bold">{</span> <span style="color:#000">ctx</span> <span style="color:#ce5c00;font-weight:bold">-&gt;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">ctx</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">logger</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">info</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;Executed once at startup of Gremlin Server.&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">},</span>
</span></span><span style="display:flex;"><span> <span style="color:#f57900">onShutDown:</span> <span style="color:#ce5c00;font-weight:bold">{</span> <span style="color:#000">ctx</span> <span style="color:#ce5c00;font-weight:bold">-&gt;</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">ctx</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">logger</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">info</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;Executed once at shutdown of Gremlin Server.&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">]</span> <span style="color:#204a87;font-weight:bold">as</span> <span style="color:#000">LifeCycleHook</span><span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// define schema manger for hugegraph
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">schema</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">hugegraph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">schema</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// define the default TraversalSource to bind queries to - this one will be named &#34;g&#34;.
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">g</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">hugegraph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">traversal</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span></code></pre></div><p>这样在console中便可以直接使用schema和g这两个对象,做元数据的管理和图的查询了。</p>
<p>不定义了也没关系,因为所有的对象都可以通过graph获得,例如:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#000">gremlin</span><span style="color:#ce5c00;font-weight:bold">&gt;</span> <span style="color:#ce5c00;font-weight:bold">:&gt;</span> <span style="color:#000">hugegraph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">traversal</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">V</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#000">v</span><span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#0000cf;font-weight:bold">2</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">ripple</span><span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#000">v</span><span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">vadas</span><span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#000">v</span><span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">peter</span><span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#000">v</span><span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">josh</span><span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#000">v</span><span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">marko</span><span style="color:#ce5c00;font-weight:bold">]</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#000">v</span><span style="color:#ce5c00;font-weight:bold">[</span><span style="color:#0000cf;font-weight:bold">2</span><span style="color:#ce5c00;font-weight:bold">:</span><span style="color:#000">lop</span><span style="color:#ce5c00;font-weight:bold">]</span>
</span></span></code></pre></div><p>在Client/Server模式下,所有跟Server有关的操作都要加上<code>:&gt; </code>,如果不加,表示在console本地操作。</p>
<p>还可以把多条语句放在一个字符串变量中,然后一次性发给server:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#000">gremlin</span><span style="color:#ce5c00;font-weight:bold">&gt;</span> <span style="color:#000">script</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#4e9a06">&#34;&#34;&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">graph = hugegraph;
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">marko = graph.addVertex(T.label, &#34;person&#34;, &#34;name&#34;, &#34;marko&#34;, &#34;age&#34;, 29, &#34;city&#34;, &#34;Beijing&#34;);
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">vadas = graph.addVertex(T.label, &#34;person&#34;, &#34;name&#34;, &#34;vadas&#34;, &#34;age&#34;, 27, &#34;city&#34;, &#34;Hongkong&#34;);
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">lop = graph.addVertex(T.label, &#34;software&#34;, &#34;name&#34;, &#34;lop&#34;, &#34;lang&#34;, &#34;java&#34;, &#34;price&#34;, 328);
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">josh = graph.addVertex(T.label, &#34;person&#34;, &#34;name&#34;, &#34;josh&#34;, &#34;age&#34;, 32, &#34;city&#34;, &#34;Beijing&#34;);
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">ripple = graph.addVertex(T.label, &#34;software&#34;, &#34;name&#34;, &#34;ripple&#34;, &#34;lang&#34;, &#34;java&#34;, &#34;price&#34;, 199);
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">peter = graph.addVertex(T.label, &#34;person&#34;, &#34;name&#34;, &#34;peter&#34;, &#34;age&#34;, 35, &#34;city&#34;, &#34;Shanghai&#34;);
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">marko.addEdge(&#34;knows&#34;, vadas, &#34;date&#34;, &#34;20160110&#34;, &#34;weight&#34;, 0.5);
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">marko.addEdge(&#34;knows&#34;, josh, &#34;date&#34;, &#34;20130220&#34;, &#34;weight&#34;, 1.0);
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">marko.addEdge(&#34;created&#34;, lop, &#34;date&#34;, &#34;20171210&#34;, &#34;weight&#34;, 0.4);
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">josh.addEdge(&#34;created&#34;, lop, &#34;date&#34;, &#34;20091111&#34;, &#34;weight&#34;, 0.4);
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">josh.addEdge(&#34;created&#34;, ripple, &#34;date&#34;, &#34;20171210&#34;, &#34;weight&#34;, 1.0);
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">peter.addEdge(&#34;created&#34;, lop, &#34;date&#34;, &#34;20170324&#34;, &#34;weight&#34;, 0.2);
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">graph.tx().commit();
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">g = graph.traversal();
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">g.V().toList().size();
</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">&#34;&#34;&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#000">gremlin</span><span style="color:#ce5c00;font-weight:bold">&gt;</span> <span style="color:#ce5c00;font-weight:bold">:&gt;</span> <span style="color:#5c35cc;font-weight:bold">@script</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">==&gt;</span><span style="color:#0000cf;font-weight:bold">6</span>
</span></span></code></pre></div><p>更多关于gremlin-console的使用,请参考<a href="http://tinkerpop.apache.org/docs/current/reference/">Tinkerpop官网</a></p>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-d2c6535126cca927d2a9c893abde92a0">6 - GUIDES</h1>
</div>
<div class="td-content" style="">
<h1 id="pg-dcb89d888ea6f4146ace522d76fe2776">6.1 - HugeGraph Architecture Overview</h1>
<h3 id="1-概述">1 概述</h3>
<p>作为一款通用的图数据库产品,HugeGraph需具备图数据的基本功能,如下图所示。HugeGraph包括三个层次的功能,分别是存储层、计算层和用户接口层。 HugeGraph支持OLTP和OLAP两种图计算类型,其中OLTP实现了<a href="https://tinkerpop.apache.org">Apache TinkerPop3</a>框架,并支持<a href="https://tinkerpop.apache.org/gremlin.html">Gremlin</a>查询语言。 OLAP计算是基于SparkGraphX实现。</p>
<center>
<img src="/docs/images/design/architectural-overview.png" alt="image">
</center>
<h3 id="2-组件">2 组件</h3>
<p>HugeGraph的主要功能分为HugeCore、ApiServer、HugeGraph-Client、HugeGraph-Loader和HugeGraph-Studio等组件构成,各组件之间的通信关系如下图所示。</p>
<center>
<img src="/docs/images/design/architectural-component.png" alt="image">
</center>
<ul>
<li>HugeCore :HugeGraph的核心模块,TinkerPop的接口主要在该模块中实现。HugeCore的功能涵盖包括OLTP和OLAP两个部分。</li>
<li>ApiServer :提供RESTFul Api接口,对外提供Graph Api、Schema Api和Gremlin Api等接口服务。</li>
<li>HugeGraph-Client:基于Java客户端驱动程序。HugeGraph-Client是Java版本客户端驱动程序,后续可根据需要提供Python、Go、C++等多语言支持。</li>
<li>HugeGraph-Loader:数据导入模块。HugeGraph-Loader可以扫描并分析现有数据,自动生成Graph Schema创建语言,通过批量方式快速导入数据。</li>
<li>HugeGraph-Studio:基于Web的可视化IDE环境。以Notebook方式记录Gremlin查询,可视化展示Graph的关联关系。HugeGraph-Studio也是本系统推荐的工具。</li>
</ul>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-3d0f9ef831ef5d7d11acfb09140359fa">6.2 - HugeGraph Design Concepts</h1>
<h3 id="1-property-graph">1. Property Graph</h3>
<p>常见的图数据表示模型有两种,分别是RDF(Resource Description Framework)模型和属性图(Property Graph)模型。
RDF和Property Graph都是最基础、最有名的图表示模式,都能够表示各种图的实体关系建模。
RDF是W3C标准,而Property Graph是工业标准,受到广大图数据库厂商的广泛支持。HugeGraph目前采用Property Graph。</p>
<p>HugeGraph对应的存储概念模型也是参考Property Graph而设计的,具体示例详见下图:(<em>此图为旧版设计已过时,请忽略它,后续更新</em></p>
<p><img src="/docs/images/design/PropertyGraph.png" alt="image"></p>
<p>在HugeGraph内部,每个顶点 / 边由唯一的 VertexId / EdgeId 标识,属性存储在对应点 / 边内部。而顶点与顶点之间的关系 / 映射则是通过边来存储的。</p>
<p>顶点属性值通过边指针方式存储时,如果要更新一个顶点特定的属性值直接通过覆盖写入即可,其弊端是冗余存储了VertexId;
如果要更新关系的属性需要通过read-and-modify方式,先读取所有属性,修改部分属性,然后再写入存储系统,更新效率较低。
从经验来看顶点属性的修改需求较多,而边的属性修改需求较少,例如PageRank和Graph Cluster等计算都需要频繁修改顶点的属性值。</p>
<h3 id="2-图分区方案">2. 图分区方案</h3>
<p>对于分布式图数据库而言,图的分区存储方式有两种:分别是边分割存储(Edge Cut)和点分割存储(Vertex Cut),如下图所示。
使用Edge Cut方式存储图时,任何一个顶点只会出现在一台机器上,而边可能分布在不同机器上,这种存储方式有可能导致边多次存储。
使用Vertex Cut方式存储图时,任何一条边只会出现在一台机器上,而每相同的一个点可能分布到不同机器上,这种存储方式可能会导致顶点多次存储。</p>
<p><img src="/docs/images/design/GraphCut.png" alt="image"></p>
<p>采用EdgeCut分区方案可以支持高性能的插入和更新操作,而VertexCut分区方案更适合静态图查询分析,因此EdgeCut适合OLTP图查询,VertexCut更适合OLAP的图查询。
HugeGraph目前采用EdgeCut的分区方案。</p>
<h3 id="3-vertexid-策略">3. VertexId 策略</h3>
<p>HugeGraph的Vertex支持三种ID策略,在同一个图数据库中不同的VertexLabel可以使用不同的Id策略,目前HugeGraph支持的Id策略分别是:</p>
<ul>
<li>自动生成(AUTOMATIC):使用Snowflake算法自动生成全局唯一Id,Long类型;</li>
<li>主键(PRIMARY_KEY):通过VertexLabel+PrimaryKeyValues生成Id,String类型;</li>
<li>自定义(CUSTOMIZE_STRING|CUSTOMIZE_NUMBER):用户自定义Id,分为String和Long类型两种,需自己保证Id的唯一性;</li>
</ul>
<p>默认的Id策略是AUTOMATIC,如果用户调用primaryKeys()方法并设置了正确的PrimaryKeys,则自动启用PRIMARY_KEY策略。
启用PRIMARY_KEY策略后HugeGraph能根据PrimaryKeys实现数据去重。</p>
<ol>
<li>AUTOMATIC ID策略</li>
</ol>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">useAutomaticId</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;marko&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">18</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span></code></pre></div><ol start="2">
<li>PRIMARY_KEY ID策略</li>
</ol>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">usePrimaryKeyId</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;marko&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">18</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span></code></pre></div><ol start="3">
<li>CUSTOMIZE_STRING ID策略</li>
</ol>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">useCustomizeStringId</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">id</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;123456&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;marko&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">18</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span></code></pre></div><ol start="4">
<li>CUSTOMIZE_NUMBER ID策略</li>
</ol>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">useCustomizeNumberId</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;person&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">id</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">123456</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;marko&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">18</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;city&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Beijing&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span></code></pre></div><p>如果用户需要Vertex去重,有三种方案分别是:</p>
<ol>
<li>采用PRIMARY_KEY策略,自动覆盖,适合大数据量批量插入,用户无法知道是否发生了覆盖行为</li>
<li>采用AUTOMATIC策略,read-and-modify,适合小数据量插入,用户可以明确知道是否发生覆盖</li>
<li>采用CUSTOMIZE_STRING或CUSTOMIZE_NUMBER策略,用户自己保证唯一</li>
</ol>
<h3 id="4-edgeid-策略">4. EdgeId 策略</h3>
<p>HugeGraph的EdgeId是由<code>srcVertexId</code>+<code>edgeLabel</code>+<code>sortKey</code>+<code>tgtVertexId</code>四部分组合而成。其中<code>sortKey</code>是HugeGraph的一个重要概念。
在Edge中加入<code>sortKey</code>作为Edge的唯一标识的原因有两个:</p>
<ol>
<li>如果两个顶点之间存在多条相同Label的边可通过<code>sortKey</code>来区分</li>
<li>对于SuperNode的节点,可以通过<code>sortKey</code>来排序截断。</li>
</ol>
<p>由于EdgeId是由<code>srcVertexId</code>+<code>edgeLabel</code>+<code>sortKey</code>+<code>tgtVertexId</code>四部分组合,多次插入相同的Edge时HugeGraph会自动覆盖以实现去重。
需要注意的是如果批量插入模式下Edge的属性也将会覆盖。</p>
<p>另外由于HugeGraph的EdgeId采用自动去重策略,对于self-loop(一个顶点存在一条指向自身的边)的情况下HugeGraph认为仅有一条边,对于采用AUTOMATIC策略的图数据库(例如TitianDB
)则会认为该图存在两条边。</p>
<blockquote>
<p>HugeGraph的边仅支持有向边,无向边可以创建Out和In两条边来实现。</p>
</blockquote>
<h3 id="5-hugegraph-transaction-overview">5. HugeGraph transaction overview</h3>
<h5 id="tinkerpop事务概述">TinkerPop事务概述</h5>
<p>TinkerPop transaction事务是指对数据库执行操作的工作单元,一个事务内的一组操作要么执行成功,要么全部失败。
详细介绍请参考TinkerPop官方文档:http://tinkerpop.apache.org/docs/current/reference/#transactions</p>
<h5 id="tinkerpop事务操作接口">TinkerPop事务操作接口</h5>
<ul>
<li>open 打开事务</li>
<li>commit 提交事务</li>
<li>rollback 回滚事务</li>
<li>close 关闭事务</li>
</ul>
<h5 id="tinkerpop事务规范">TinkerPop事务规范</h5>
<ul>
<li>事务必须显式提交后才可生效(未提交时修改操作只有本事务内查询可看到)</li>
<li>事务必须打开之后才可提交或回滚</li>
<li>如果事务设置自动打开则无需显式打开(默认方式),如果设置手动打开则必须显式打开</li>
<li>可设置事务关闭时:自动提交、自动回滚(默认方式)、手动(禁止显式关闭)等3种模式</li>
<li>事务在提交或回滚后必须是关闭状态</li>
<li>事务在查询后必须是打开状态</li>
<li>事务(非threaded tx)必须线程隔离,多线程操作同一事务互不影响</li>
</ul>
<p>更多事务规范用例见:<a href="https://github.com/apache/tinkerpop/blob/master/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/TransactionTest.java">Transaction Test</a></p>
<h5 id="hugegraph事务实现">HugeGraph事务实现</h5>
<ul>
<li>一个事务中所有的操作要么成功要么失败</li>
<li>一个事务只能读取到另外一个事务已提交的内容(Read committed)</li>
<li>所有未提交的操作均能在本事务中查询出来,包括:
<ul>
<li>增加顶点能够查询出该顶点</li>
<li>删除顶点能够过滤掉该顶点</li>
<li>删除顶点能够过滤掉该顶点相关边</li>
<li>增加边能够查询出该边</li>
<li>删除边能够过滤掉该边</li>
<li>增加/修改(顶点、边)属性能够在查询时生效</li>
<li>删除(顶点、边)属性能够在查询时生效</li>
</ul>
</li>
<li>所有未提交的操作在事务回滚后均失效,包括:
<ul>
<li>顶点、边的增加、删除</li>
<li>属性的增加/修改、删除</li>
</ul>
</li>
</ul>
<p>示例:一个事务无法读取另一个事务未提交的内容</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">static</span> <span style="color:#204a87;font-weight:bold">void</span> <span style="color:#000">testUncommittedTx</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#204a87;font-weight:bold">final</span> <span style="color:#000">HugeGraph</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#204a87;font-weight:bold">throws</span> <span style="color:#000">InterruptedException</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">final</span> <span style="color:#000">CountDownLatch</span> <span style="color:#000">latchUncommit</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">CountDownLatch</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">1</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">final</span> <span style="color:#000">CountDownLatch</span> <span style="color:#000">latchRollback</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">CountDownLatch</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">1</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Thread</span> <span style="color:#000">thread</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">Thread</span><span style="color:#ce5c00;font-weight:bold">(()</span> <span style="color:#ce5c00;font-weight:bold">-&gt;</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#8f5902;font-style:italic">// this is a new transaction in the new thread
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">tx</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">open</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;current transaction operations&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">james</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;author&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;id&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">1</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;James Gosling&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">62</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;lived&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;Canadian&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">Vertex</span> <span style="color:#000">java</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;language&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;java&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;versions&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">Arrays</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">asList</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">6</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">7</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">8</span><span style="color:#ce5c00;font-weight:bold">));</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">james</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;created&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">java</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#8f5902;font-style:italic">// we can query the uncommitted records in the current transaction
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;current transaction assert&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">assert</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertices</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">hasNext</span><span style="color:#ce5c00;font-weight:bold">()</span> <span style="color:#ce5c00;font-weight:bold">==</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">assert</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edges</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">hasNext</span><span style="color:#ce5c00;font-weight:bold">()</span> <span style="color:#ce5c00;font-weight:bold">==</span> <span style="color:#204a87;font-weight:bold">true</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">latchUncommit</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">countDown</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">try</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">latchRollback</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">await</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span> <span style="color:#204a87;font-weight:bold">catch</span> <span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">InterruptedException</span> <span style="color:#000">e</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">throw</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">RuntimeException</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">e</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;current transaction rollback&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">tx</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">rollback</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">});</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">thread</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">start</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#8f5902;font-style:italic">// query none result in other transaction when not commit()
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#000">latchUncommit</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">await</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;other transaction assert for uncommitted&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">assert</span> <span style="color:#ce5c00;font-weight:bold">!</span><span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertices</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">hasNext</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">assert</span> <span style="color:#ce5c00;font-weight:bold">!</span><span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edges</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">hasNext</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#000">latchRollback</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">countDown</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">thread</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">join</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#8f5902;font-style:italic">// query none result in other transaction after rollback()
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#000">System</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">println</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;other transaction assert for rollback&#34;</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">assert</span> <span style="color:#ce5c00;font-weight:bold">!</span><span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertices</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">hasNext</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">assert</span> <span style="color:#ce5c00;font-weight:bold">!</span><span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edges</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">hasNext</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="事务实现原理">事务实现原理</h5>
<ul>
<li>服务端内部通过将事务与线程绑定实现隔离(ThreadLocal)</li>
<li>本事务未提交的内容按照时间顺序覆盖老数据以供本事务查询最新版本数据</li>
<li>底层依赖后端数据库保证事务原子性操作(如Cassandra/RocksDB的batch接口均保证原子性)</li>
</ul>
<h6 id="注意"><em>注意</em></h6>
<blockquote>
<p>RESTful API暂时未暴露事务接口</p>
</blockquote>
<blockquote>
<p>TinkerPop API允许打开事务,请求完成时会自动关闭(Gremlin Server强制关闭)</p>
</blockquote>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-96a920d19e01666d95eded506d502ab4">6.3 - HugeGraph Plugin机制及插件扩展流程</h1>
<h3 id="背景">背景</h3>
<ol>
<li>HugeGraph不仅开源开放,而且要做到简单易用,一般用户无需更改源码也能轻松增加插件扩展功能。</li>
<li>HugeGraph支持多种内置存储后端,也允许用户无需更改现有源码的情况下扩展自定义后端。</li>
<li>HugeGraph支持全文检索,全文检索功能涉及到各语言分词,目前已内置8种中文分词器,也允许用户无需更改现有源码的情况下扩展自定义分词器。</li>
</ol>
<h3 id="可扩展维度">可扩展维度</h3>
<p>目前插件方式提供如下几个维度的扩展项:</p>
<ul>
<li>后端存储</li>
<li>序列化器</li>
<li>自定义配置项</li>
<li>分词器</li>
</ul>
<h3 id="插件实现机制">插件实现机制</h3>
<ol>
<li>HugeGraph提供插件接口HugeGraphPlugin,通过Java SPI机制支持插件化</li>
<li>HugeGraph提供了4个扩展项注册函数:<code>registerOptions()</code><code>registerBackend()</code><code>registerSerializer()</code><code>registerAnalyzer()</code></li>
<li>插件实现者实现相应的Options、Backend、Serializer或Analyzer的接口</li>
<li>插件实现者实现HugeGraphPlugin接口的<code>register()</code>方法,在该方法中注册上述第3点所列的具体实现类,并打成jar包</li>
<li>插件使用者将jar包放在HugeGraph Server安装目录的<code>plugins</code>目录下,修改相关配置项为插件自定义值,重启即可生效</li>
</ol>
<h3 id="插件实现流程实例">插件实现流程实例</h3>
<h4 id="1-新建一个maven项目">1 新建一个maven项目</h4>
<h5 id="11-项目名称取名hugegraph-plugin-demo">1.1 项目名称取名:hugegraph-plugin-demo</h5>
<h5 id="12-添加hugegraph-core-jar包依赖">1.2 添加<code>hugegraph-core</code> Jar包依赖</h5>
<p>maven pom.xml详细内容如下:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&lt;project</span> <span style="color:#c4a000">xmlns=</span><span style="color:#4e9a06">&#34;http://maven.apache.org/POM/4.0.0&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#c4a000">xmlns:xsi=</span><span style="color:#4e9a06">&#34;http://www.w3.org/2001/XMLSchema-instance&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#c4a000">xsi:schemaLocation=</span><span style="color:#4e9a06">&#34;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&#34;</span><span style="color:#204a87;font-weight:bold">&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&lt;modelVersion&gt;</span>4.0.0<span style="color:#204a87;font-weight:bold">&lt;/modelVersion&gt;</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&lt;groupId&gt;</span>com.baidu.hugegraph<span style="color:#204a87;font-weight:bold">&lt;/groupId&gt;</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&lt;artifactId&gt;</span>hugegraph-plugin-demo<span style="color:#204a87;font-weight:bold">&lt;/artifactId&gt;</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&lt;version&gt;</span>1.0.0<span style="color:#204a87;font-weight:bold">&lt;/version&gt;</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&lt;packaging&gt;</span>jar<span style="color:#204a87;font-weight:bold">&lt;/packaging&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&lt;name&gt;</span>hugegraph-plugin-demo<span style="color:#204a87;font-weight:bold">&lt;/name&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&lt;dependencies&gt;</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&lt;dependency&gt;</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&lt;groupId&gt;</span>com.baidu.hugegraph<span style="color:#204a87;font-weight:bold">&lt;/groupId&gt;</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&lt;artifactId&gt;</span>hugegraph-core<span style="color:#204a87;font-weight:bold">&lt;/artifactId&gt;</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&lt;version&gt;</span>${project.version}<span style="color:#204a87;font-weight:bold">&lt;/version&gt;</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&lt;/dependency&gt;</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&lt;/dependencies&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">&lt;/project&gt;</span>
</span></span></code></pre></div><h4 id="2-实现扩展功能">2 实现扩展功能</h4>
<h5 id="21-扩展自定义后端">2.1 扩展自定义后端</h5>
<h6 id="211-实现接口backendstoreprovider">2.1.1 实现接口BackendStoreProvider</h6>
<ul>
<li>可实现接口:<code>com.baidu.hugegraph.backend.store.BackendStoreProvider</code></li>
<li>或者继承抽象类:<code>com.baidu.hugegraph.backend.store.AbstractBackendStoreProvider</code></li>
</ul>
<p>以RocksDB后端RocksDBStoreProvider为例:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">class</span> <span style="color:#000">RocksDBStoreProvider</span> <span style="color:#204a87;font-weight:bold">extends</span> <span style="color:#000">AbstractBackendStoreProvider</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">protected</span> <span style="color:#000">String</span> <span style="color:#000">database</span><span style="color:#ce5c00;font-weight:bold">()</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">return</span> <span style="color:#204a87;font-weight:bold">this</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">graph</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">toLowerCase</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#5c35cc;font-weight:bold">@Override</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">protected</span> <span style="color:#000">BackendStore</span> <span style="color:#000">newSchemaStore</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">String</span> <span style="color:#000">store</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">return</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">RocksDBSchemaStore</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#204a87;font-weight:bold">this</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#204a87;font-weight:bold">this</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">database</span><span style="color:#ce5c00;font-weight:bold">(),</span> <span style="color:#000">store</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#5c35cc;font-weight:bold">@Override</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">protected</span> <span style="color:#000">BackendStore</span> <span style="color:#000">newGraphStore</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">String</span> <span style="color:#000">store</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">return</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">RocksDBGraphStore</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#204a87;font-weight:bold">this</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#204a87;font-weight:bold">this</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">database</span><span style="color:#ce5c00;font-weight:bold">(),</span> <span style="color:#000">store</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#5c35cc;font-weight:bold">@Override</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">String</span> <span style="color:#000">type</span><span style="color:#ce5c00;font-weight:bold">()</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">return</span> <span style="color:#4e9a06">&#34;rocksdb&#34;</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#5c35cc;font-weight:bold">@Override</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">String</span> <span style="color:#000">version</span><span style="color:#ce5c00;font-weight:bold">()</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">return</span> <span style="color:#4e9a06">&#34;1.0&#34;</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span>
</span></span></code></pre></div><h6 id="212-实现接口backendstore">2.1.2 实现接口BackendStore</h6>
<p>BackendStore接口定义如下:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">interface</span> <span style="color:#000">BackendStore</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#8f5902;font-style:italic">// Store name
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">String</span> <span style="color:#000">store</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#8f5902;font-style:italic">// Database name
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">String</span> <span style="color:#000">database</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#8f5902;font-style:italic">// Get the parent provider
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">BackendStoreProvider</span> <span style="color:#000">provider</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#8f5902;font-style:italic">// Open/close database
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">void</span> <span style="color:#000">open</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">HugeConfig</span> <span style="color:#000">config</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">void</span> <span style="color:#000">close</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#8f5902;font-style:italic">// Initialize/clear database
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">void</span> <span style="color:#000">init</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">void</span> <span style="color:#000">clear</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#8f5902;font-style:italic">// Add/delete data
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">void</span> <span style="color:#000">mutate</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">BackendMutation</span> <span style="color:#000">mutation</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#8f5902;font-style:italic">// Query data
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">Iterator</span><span style="color:#ce5c00;font-weight:bold">&lt;</span><span style="color:#000">BackendEntry</span><span style="color:#ce5c00;font-weight:bold">&gt;</span> <span style="color:#000">query</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">Query</span> <span style="color:#000">query</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#8f5902;font-style:italic">// Transaction
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">void</span> <span style="color:#000">beginTx</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">void</span> <span style="color:#000">commitTx</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">void</span> <span style="color:#000">rollbackTx</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#8f5902;font-style:italic">// Get metadata by key
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#ce5c00;font-weight:bold">&lt;</span><span style="color:#000">R</span><span style="color:#ce5c00;font-weight:bold">&gt;</span> <span style="color:#000">R</span> <span style="color:#000">metadata</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">HugeType</span> <span style="color:#000">type</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">String</span> <span style="color:#000">meta</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">Object</span><span style="color:#ce5c00;font-weight:bold">[]</span> <span style="color:#000">args</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#8f5902;font-style:italic">// Backend features
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">BackendFeatures</span> <span style="color:#000">features</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#8f5902;font-style:italic">// Generate an id for a specific type
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">Id</span> <span style="color:#000">nextId</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">HugeType</span> <span style="color:#000">type</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span>
</span></span></code></pre></div><h6 id="213-扩展自定义序列化器">2.1.3 扩展自定义序列化器</h6>
<p>序列化器必须继承抽象类:<code>com.baidu.hugegraph.backend.serializer.AbstractSerializer</code>(<code>implements GraphSerializer, SchemaSerializer</code>)
主要接口的定义如下:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">interface</span> <span style="color:#000">GraphSerializer</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">BackendEntry</span> <span style="color:#000">writeVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">HugeVertex</span> <span style="color:#000">vertex</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">BackendEntry</span> <span style="color:#000">writeVertexProperty</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">HugeVertexProperty</span><span style="color:#ce5c00;font-weight:bold">&lt;?&gt;</span> <span style="color:#000">prop</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">HugeVertex</span> <span style="color:#000">readVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">HugeGraph</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">BackendEntry</span> <span style="color:#000">entry</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">BackendEntry</span> <span style="color:#000">writeEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">HugeEdge</span> <span style="color:#000">edge</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">BackendEntry</span> <span style="color:#000">writeEdgeProperty</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">HugeEdgeProperty</span><span style="color:#ce5c00;font-weight:bold">&lt;?&gt;</span> <span style="color:#000">prop</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">HugeEdge</span> <span style="color:#000">readEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">HugeGraph</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">BackendEntry</span> <span style="color:#000">entry</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">BackendEntry</span> <span style="color:#000">writeIndex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">HugeIndex</span> <span style="color:#000">index</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">HugeIndex</span> <span style="color:#000">readIndex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">HugeGraph</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">ConditionQuery</span> <span style="color:#000">query</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">BackendEntry</span> <span style="color:#000">entry</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">BackendEntry</span> <span style="color:#000">writeId</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">HugeType</span> <span style="color:#000">type</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">Id</span> <span style="color:#000">id</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">Query</span> <span style="color:#000">writeQuery</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">Query</span> <span style="color:#000">query</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">interface</span> <span style="color:#000">SchemaSerializer</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">BackendEntry</span> <span style="color:#000">writeVertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">VertexLabel</span> <span style="color:#000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">VertexLabel</span> <span style="color:#000">readVertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">HugeGraph</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">BackendEntry</span> <span style="color:#000">entry</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">BackendEntry</span> <span style="color:#000">writeEdgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">EdgeLabel</span> <span style="color:#000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">EdgeLabel</span> <span style="color:#000">readEdgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">HugeGraph</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">BackendEntry</span> <span style="color:#000">entry</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">BackendEntry</span> <span style="color:#000">writePropertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">PropertyKey</span> <span style="color:#000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">PropertyKey</span> <span style="color:#000">readPropertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">HugeGraph</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">BackendEntry</span> <span style="color:#000">entry</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">BackendEntry</span> <span style="color:#000">writeIndexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">IndexLabel</span> <span style="color:#000">indexLabel</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">IndexLabel</span> <span style="color:#000">readIndexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">HugeGraph</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">BackendEntry</span> <span style="color:#000">entry</span><span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span>
</span></span></code></pre></div><h6 id="214-扩展自定义配置项">2.1.4 扩展自定义配置项</h6>
<p>增加自定义后端时,可能需要增加新的配置项,实现流程主要包括:</p>
<ul>
<li>增加配置项容器类,并实现接口<code>com.baidu.hugegraph.config.OptionHolder</code></li>
<li>提供单例方法<code>public static OptionHolder instance()</code>,并在对象初始化时调用方法<code>OptionHolder.registerOptions()</code></li>
<li>增加配置项声明,单值配置项类型为<code>ConfigOption</code>、多值配置项类型为<code>ConfigListOption</code></li>
</ul>
<p>以RocksDB配置项定义为例:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">class</span> <span style="color:#000">RocksDBOptions</span> <span style="color:#204a87;font-weight:bold">extends</span> <span style="color:#000">OptionHolder</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">private</span> <span style="color:#000">RocksDBOptions</span><span style="color:#ce5c00;font-weight:bold">()</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">super</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">private</span> <span style="color:#204a87;font-weight:bold">static</span> <span style="color:#204a87;font-weight:bold">volatile</span> <span style="color:#000">RocksDBOptions</span> <span style="color:#000">instance</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">static</span> <span style="color:#204a87;font-weight:bold">synchronized</span> <span style="color:#000">RocksDBOptions</span> <span style="color:#000">instance</span><span style="color:#ce5c00;font-weight:bold">()</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">if</span> <span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">instance</span> <span style="color:#ce5c00;font-weight:bold">==</span> <span style="color:#204a87;font-weight:bold">null</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">instance</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">RocksDBOptions</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">instance</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">registerOptions</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">return</span> <span style="color:#000">instance</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">static</span> <span style="color:#204a87;font-weight:bold">final</span> <span style="color:#000">ConfigOption</span><span style="color:#ce5c00;font-weight:bold">&lt;</span><span style="color:#000">String</span><span style="color:#ce5c00;font-weight:bold">&gt;</span> <span style="color:#000">DATA_PATH</span> <span style="color:#ce5c00;font-weight:bold">=</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">ConfigOption</span><span style="color:#ce5c00;font-weight:bold">&lt;&gt;(</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;rocksdb.data_path&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;The path for storing data of RocksDB.&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">disallowEmpty</span><span style="color:#ce5c00;font-weight:bold">(),</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;rocksdb-data&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">static</span> <span style="color:#204a87;font-weight:bold">final</span> <span style="color:#000">ConfigOption</span><span style="color:#ce5c00;font-weight:bold">&lt;</span><span style="color:#000">String</span><span style="color:#ce5c00;font-weight:bold">&gt;</span> <span style="color:#000">WAL_PATH</span> <span style="color:#ce5c00;font-weight:bold">=</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">ConfigOption</span><span style="color:#ce5c00;font-weight:bold">&lt;&gt;(</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;rocksdb.wal_path&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;The path for storing WAL of RocksDB.&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">disallowEmpty</span><span style="color:#ce5c00;font-weight:bold">(),</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;rocksdb-data&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">static</span> <span style="color:#204a87;font-weight:bold">final</span> <span style="color:#000">ConfigListOption</span><span style="color:#ce5c00;font-weight:bold">&lt;</span><span style="color:#000">String</span><span style="color:#ce5c00;font-weight:bold">&gt;</span> <span style="color:#000">DATA_DISKS</span> <span style="color:#ce5c00;font-weight:bold">=</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">ConfigListOption</span><span style="color:#ce5c00;font-weight:bold">&lt;&gt;(</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;rocksdb.data_disks&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">false</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;The optimized disks for storing data of RocksDB. &#34;</span> <span style="color:#ce5c00;font-weight:bold">+</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;The format of each element: `STORE/TABLE: /path/to/disk`.&#34;</span> <span style="color:#ce5c00;font-weight:bold">+</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;Allowed keys are [graph/vertex, graph/edge_out, graph/edge_in, &#34;</span> <span style="color:#ce5c00;font-weight:bold">+</span>
</span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;graph/secondary_index, graph/range_index]&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">null</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">String</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">class</span><span style="color:#ce5c00;font-weight:bold">,</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">ImmutableList</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">of</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">);</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span>
</span></span></code></pre></div><h5 id="22-扩展自定义分词器">2.2 扩展自定义分词器</h5>
<p>分词器需要实现接口<code>com.baidu.hugegraph.analyzer.Analyzer</code>,以实现一个SpaceAnalyzer空格分词器为例。</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">package</span> <span style="color:#000">com.baidu.hugegraph.plugin</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">java.util.Arrays</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">java.util.HashSet</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">java.util.Set</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">import</span> <span style="color:#000">com.baidu.hugegraph.analyzer.Analyzer</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">class</span> <span style="color:#000">SpaceAnalyzer</span> <span style="color:#204a87;font-weight:bold">implements</span> <span style="color:#000">Analyzer</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#5c35cc;font-weight:bold">@Override</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">Set</span><span style="color:#ce5c00;font-weight:bold">&lt;</span><span style="color:#000">String</span><span style="color:#ce5c00;font-weight:bold">&gt;</span> <span style="color:#000">segment</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">String</span> <span style="color:#000">text</span><span style="color:#ce5c00;font-weight:bold">)</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">return</span> <span style="color:#204a87;font-weight:bold">new</span> <span style="color:#000">HashSet</span><span style="color:#ce5c00;font-weight:bold">&lt;&gt;(</span><span style="color:#000">Arrays</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">asList</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">text</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">split</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34; &#34;</span><span style="color:#ce5c00;font-weight:bold">)));</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="3-实现插件接口并进行注册">3 实现插件接口,并进行注册</h4>
<p>插件注册入口为<code>HugeGraphPlugin.register()</code>,自定义插件必须实现该接口方法,在其内部注册上述定义好的扩展项。
接口<code>com.baidu.hugegraph.plugin.HugeGraphPlugin</code>定义如下:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">interface</span> <span style="color:#000">HugeGraphPlugin</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">String</span> <span style="color:#000">name</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">void</span> <span style="color:#000">register</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">String</span> <span style="color:#000">supportsMinVersion</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">String</span> <span style="color:#000">supportsMaxVersion</span><span style="color:#ce5c00;font-weight:bold">();</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span>
</span></span></code></pre></div><p>并且HugeGraphPlugin提供了4个静态方法用于注册扩展项:</p>
<ul>
<li>registerOptions(String name, String classPath):注册配置项</li>
<li>registerBackend(String name, String classPath):注册后端(BackendStoreProvider)</li>
<li>registerSerializer(String name, String classPath):注册序列化器</li>
<li>registerAnalyzer(String name, String classPath):注册分词器</li>
</ul>
<p>下面以注册SpaceAnalyzer分词器为例:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">package</span> <span style="color:#000">com.baidu.hugegraph.plugin</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">class</span> <span style="color:#000">DemoPlugin</span> <span style="color:#204a87;font-weight:bold">implements</span> <span style="color:#000">HugeGraphPlugin</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#5c35cc;font-weight:bold">@Override</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#000">String</span> <span style="color:#000">name</span><span style="color:#ce5c00;font-weight:bold">()</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">return</span> <span style="color:#4e9a06">&#34;demo&#34;</span><span style="color:#ce5c00;font-weight:bold">;</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#5c35cc;font-weight:bold">@Override</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">public</span> <span style="color:#204a87;font-weight:bold">void</span> <span style="color:#000">register</span><span style="color:#ce5c00;font-weight:bold">()</span> <span style="color:#ce5c00;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#000">HugeGraphPlugin</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">registerAnalyzer</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;demo&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">SpaceAnalyzer</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">class</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">getName</span><span style="color:#ce5c00;font-weight:bold">());</span>
</span></span><span style="display:flex;"><span> <span style="color:#ce5c00;font-weight:bold">}</span>
</span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span>
</span></span></code></pre></div><h4 id="4-配置spi入口">4 配置SPI入口</h4>
<ol>
<li>确保services目录存在:hugegraph-plugin-demo/resources/META-INF/services</li>
<li>在services目录下建立文本文件:com.baidu.hugegraph.plugin.HugeGraphPlugin</li>
<li>文件内容如下:com.baidu.hugegraph.plugin.DemoPlugin</li>
</ol>
<h4 id="5-打jar包">5 打Jar包</h4>
<p>通过maven打包,在项目目录下执行命令<code>mvn package</code>,在target目录下会生成Jar包文件。
使用时将该Jar包拷到<code>plugins</code>目录,重启服务即可生效。</p>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-2c9db416c8d78f898d52c91ec12535d4">6.4 - Backup Restore</h1>
<h2 id="描述">描述</h2>
<p>Backup 和 Restore 是备份图和恢复图的功能。备份和恢复的数据包括元数据(schema)和图数据(vertex 和 edge)。</p>
<h4 id="backup">Backup</h4>
<p>将 HugeGraph 系统中的一张图的元数据和图数据以 JSON 格式导出。</p>
<h4 id="restore">Restore</h4>
<p>将 Backup 导出的JSON格式的数据,重新导入到 HugeGraph 系统中的一个图中。</p>
<p>Restore 有两种模式:</p>
<ul>
<li>Restoring 模式,将 Backup 导出的元数据和图数据原封不动的恢复到 HugeGraph 系统中。可用于图的备份和恢复,一般目标图是新图(没有元数据和图数据)。比如:
<ul>
<li>系统升级,先备份图,然后升级系统,最后将图恢复到新的系统中</li>
<li>图迁移,从一个 HugeGraph 系统中,使用 Backup 功能将图导出,然后使用 Restore 功能将图导入另一个 HugeGraph 系统中</li>
</ul>
</li>
<li>Merging 模式,将 Backup 导出的元数据和图数据导入到另一个已经存在元数据或者图数据的图中,过程中元数据的 ID 可能发生改变,顶点和边的 ID 也会发生相应变化。
<ul>
<li>可用于合并图</li>
</ul>
</li>
</ul>
<h2 id="使用方法">使用方法</h2>
<p>可以使用<a href="/docs/quickstart/hugegraph-tools">hugegraph-tools</a>进行图的备份和恢复。</p>
<h4 id="backup-1">Backup</h4>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>bin/hugegraph backup -t all -d data
</span></span></code></pre></div><p>该命令将 http://127.0.0.1 的 hugegraph 图的全部元数据和图数据备份到data目录下。</p>
<blockquote>
<p>Backup 在三种图模式下都可以正常工作</p>
</blockquote>
<h4 id="restore-1">Restore</h4>
<p>Restore 有两种模式: RESTORING 和 MERGING,备份之前首先要根据需要设置图模式。</p>
<h5 id="步骤1查看并设置图模式">步骤1:查看并设置图模式</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>bin/hugegraph graph-mode-get
</span></span></code></pre></div><p>该命令用于查看当前图模式,包括:NONE、RESTORING、MERGING。</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>bin/hugegraph graph-mode-set -m RESTORING
</span></span></code></pre></div><p>该命令用于设置图模式,Restore 之前可以设置成 RESTORING 或者 MERGING 模式,例子中设置成 RESTORING。</p>
<h5 id="步骤2restore-数据">步骤2:Restore 数据</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>bin/hugegraph restore -t all -d data
</span></span></code></pre></div><p>该命令将data目录下的全部元数据和图数据重新导入到 http://127.0.0.1 的 hugegraph 图中。</p>
<h5 id="步骤3恢复图模式">步骤3:恢复图模式</h5>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>bin/hugegraph graph-mode-set -m NONE
</span></span></code></pre></div><p>该命令用于恢复图模式为 NONE。</p>
<p>至此,一次完整的图备份和图恢复流程结束。</p>
<h4 id="帮助">帮助</h4>
<p>备份和恢复命令的详细使用方式可以参考<a href="/docs/quickstart/hugegraph-tools">hugegraph-tools文档</a></p>
<h2 id="backuprestore使用和实现的api说明">Backup/Restore使用和实现的API说明</h2>
<h4 id="backup-2">Backup</h4>
<p>Backup 使用<code>元数据</code><code>图数据</code>的相应的 list(GET) API 导出,并未增加新的 API。</p>
<h4 id="restore-2">Restore</h4>
<p>Restore 使用<code>元数据</code><code>图数据</code>的相应的 create(POST) API 导入,并未增加新的 API。</p>
<p>Restore 时存在两种不同的模式: Restoring 和 Merging,另外,还有常规模式 NONE(默认),区别如下:</p>
<ul>
<li>None 模式,元数据和图数据的写入属于正常状态,可参见功能说明。特别的:
<ul>
<li>元数据(schema)创建时不允许指定 ID</li>
<li>图数据(vertex)在 id strategy 为 Automatic 时,不允许指定 ID</li>
</ul>
</li>
<li>Restoring 模式,恢复到一个新图中,特别的:
<ul>
<li>元数据(schema)创建时允许指定 ID</li>
<li>图数据(vertex)在 id strategy 为 Automatic 时,允许指定 ID</li>
</ul>
</li>
<li>Merging 模式,合并到一个已存在元数据和图数据的图中,特别的:
<ul>
<li>元数据(schema)创建时不允许指定 ID</li>
<li>图数据(vertex)在 id strategy 为 Automatic 时,允许指定 ID</li>
</ul>
</li>
</ul>
<p>正常情况下,图模式为 None,当需要 Restore 图时,需要根据需要临时修改图模式为 Restoring 模式或者 Merging 模式,并在完成 Restore 时,恢复图模式为 None。</p>
<p>实现的设置图模式的 RESTful API 如下:</p>
<h5 id="查看某个图的模式-该操作需要管理员权限">查看某个图的模式. <strong>该操作需要管理员权限</strong></h5>
<h6 id="method--url">Method &amp; Url</h6>
<pre tabindex="0"><code>GET http://localhost:8080/graphs/{graph}/mode
</code></pre><h6 id="response-status">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;mode&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;NONE&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div><blockquote>
<p>合法的图模式包括:NONE,RESTORING,MERGING</p>
</blockquote>
<h5 id="设置某个图的模式-该操作需要管理员权限">设置某个图的模式. <strong>该操作需要管理员权限</strong></h5>
<h6 id="method--url-1">Method &amp; Url</h6>
<pre tabindex="0"><code>PUT http://localhost:8080/graphs/{graph}/mode
</code></pre><h6 id="request-body">Request Body</h6>
<pre tabindex="0"><code>&#34;RESTORING&#34;
</code></pre><blockquote>
<p>合法的图模式包括:NONE,RESTORING,MERGING</p>
</blockquote>
<h6 id="response-status-1">Response Status</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#0000cf;font-weight:bold">200</span>
</span></span></code></pre></div><h6 id="response-body-1">Response Body</h6>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span>
</span></span><span style="display:flex;"><span> <span style="color:#204a87;font-weight:bold">&#34;mode&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;RESTORING&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span>
</span></span></code></pre></div>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-3465b699399f48689cdc6b5e59a10d69">6.5 - FAQ</h1>
<ul>
<li>
<p>如何选择后端存储? 选 RocksDB 还是 Cassandra 还是 Hbase 还是 Mysql?</p>
<p>根据你的具体需要来判断, 一般单机或数据量 &lt; 100 亿推荐 RocksDB, 其他推荐使用分布式存储的后端集群</p>
</li>
<li>
<p>启动服务时提示:<code>xxx (core dumped) xxx</code></p>
<p>请检查JDK版本是否为1.8</p>
</li>
<li>
<p>启动服务成功了,但是操作图时有类似于&quot;无法连接到后端或连接未打开&quot;的提示</p>
<p>第一次启动服务前,需要先使用<code>init-store</code>初始化后端,后续版本会将提示得更清晰直接。</p>
</li>
<li>
<p>所有的后端在使用前都需要执行<code>init-store</code>吗,序列化的选择可以随意填写么?</p>
<p>除了<code>memory</code>不需要,其他后端均需要,如:<code>cassandra</code><code>hbase</code><code>rocksdb</code>等,序列化需一一对应不可随意填写。</p>
</li>
<li>
<p>执行<code>init-store</code>报错:<code>Exception in thread &quot;main&quot; java.lang.UnsatisfiedLinkError: /tmp/librocksdbjni3226083071221514754.so: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.10' not found (required by /tmp/librocksdbjni3226083071221514754.so)</code></p>
<p>RocksDB需要 gcc 4.3.0 (GLIBCXX_3.4.10) 及以上版本</p>
</li>
<li>
<p>执行<code>init-store.sh</code>时报错:<code>NoHostAvailableException</code></p>
<p><code>NoHostAvailableException</code> 是指无法连接到<code>Cassandra</code>服务,如果确定是要使用<code>cassandra</code>后端,请先安装并启动这个服务。至于这个提示本身可能不够直白,我们会更新到文档进行说明的。</p>
</li>
<li>
<p><code>bin</code>目录下包含<code>start-hugegraph.sh</code><code>start-restserver.sh</code><code>start-gremlinserver.sh</code>三个似乎与启动有关的脚本,到底该使用哪个</p>
<p>自0.3.3版本以来,已经把 GremlinServer 和 RestServer 合并为 HugeGraphServer 了,使用<code>start-hugegraph.sh</code>启动即可,后两个在后续版本会被删掉。</p>
</li>
<li>
<p>配置了两个图,名字是<code>hugegraph</code><code>hugegraph1</code>,而启动服务的命令是<code>start-hugegraph.sh</code>,是只打开了<code>hugegraph</code>这个图吗</p>
<p><code>start-hugegraph.sh</code>会打开所有<code>gremlin-server.yaml</code><code>graphs</code>下的图,这二者并无名字上的直接关系</p>
</li>
<li>
<p>服务启动成功后,使用<code>curl</code>查询所有顶点时返回乱码</p>
<p>服务端返回的批量顶点/边是压缩(gzip)过的,可以使用管道重定向至gunzip进行解压(<code>curl http://example | gunzip</code>),也可以用<code>Firefox</code><code>postman</code>或者<code>Chrome</code>浏览器的<code>restlet</code>插件发请求,会自动解压缩响应数据。</p>
</li>
<li>
<p>使用顶点Id通过<code>RESTful API</code>查询顶点时返回空,但是顶点确实是存在的</p>
<p>检查顶点Id的类型,如果是字符串类型,<code>API</code><code>url</code>中的id部分需要加上双引号,数字类型则不用加。</p>
</li>
<li>
<p>已经根据需要给顶点Id加上了双引号,但是通过<code>RESTful API</code>查询顶点时仍然返回空</p>
<p>检查顶点id中是否包含<code>+</code><code>空格</code><code>/</code><code>?</code><code>%</code><code>&amp;</code><code>=</code>这些URL的保留字符,如果存在则需要进行编码。下表给出了编码值:</p>
<pre tabindex="0"><code>特殊字符 | 编码值
--------| ----
+ | %2B
空格 | %20
/ | %2F
? | %3F
% | %25
# | %23
&amp; | %26
= | %3D
</code></pre></li>
<li>
<p>查询某一类别的顶点或边(<code>query by label</code>)时提示超时</p>
<p>由于属于某一label的数据量可能比较多,请加上limit限制。</p>
</li>
<li>
<p>通过<code>RESTful API</code>操作图是可以的,但是发送<code>Gremlin</code>语句就报错:<code>Request Failed(500)</code></p>
<p>可能是<code>GremlinServer</code>的配置有误,检查<code>gremlin-server.yaml</code><code>host</code><code>port</code>是否与<code>rest-server.properties</code><code>gremlinserver.url</code>匹配,如不匹配则修改,然后重启服务。</p>
</li>
<li>
<p>使用<code>Loader</code>导数据出现<code>Socket Timeout</code>异常,然后导致<code>Loader</code>中断</p>
<p>持续地导入数据会使<code>Server</code>的压力过大,然后导致有些请求超时。可以通过调整<code>Loader</code>的参数来适当缓解<code>Server</code>压力(如:重试次数,重试间隔,错误容忍数等),降低该问题出现频率。</p>
</li>
<li>
<p>如何删除全部的顶点和边,RESTful API中没有这样的接口,调用<code>gremlin</code><code>g.V().drop()</code>会报错<code>Vertices in transaction have reached capacity xxx</code></p>
<p>目前确实没有好办法删除全部的数据,用户如果是自己部署的<code>Server</code>和后端,可以直接清空数据库,重启<code>Server</code>。可以使用paging API或scan API先获取所有数据,再逐条删除。</p>
</li>
<li>
<p>清空了数据库,并且执行了<code>init-store</code>,但是添加<code>schema</code>时提示&quot;xxx has existed&quot;</p>
<p><code>HugeGraphServer</code>内是有缓存的,清空数据库的同时是需要重启<code>Server</code>的,否则残留的缓存会产生不一致。</p>
</li>
<li>
<p>插入顶点或边的过程中报错:<code>Id max length is 128, but got xxx {yyy}</code><code>Big id max length is 32768, but got xxx</code></p>
<p>为了保证查询性能,目前的后端存储对id列的长度做了限制,顶点id不能超过128字节,边id长度不能超过32768字节,索引id不能超过128字节。</p>
</li>
<li>
<p>是否支持嵌套属性,如果不支持,是否有什么替代方案</p>
<p>嵌套属性目前暂不支持。替代方案:可以把嵌套属性作为单独的顶点拿出来,然后用边连接起来。</p>
</li>
<li>
<p>一个<code>EdgeLabel</code>是否可以连接多对<code>VertexLabel</code>,比如&quot;投资&quot;关系,可以是&quot;个人&quot;投资&quot;企业&quot;,也可以是&quot;企业&quot;投资&quot;企业&quot;</p>
<p>一个<code>EdgeLabel</code>不支持连接多对<code>VertexLabel</code>,需要用户将<code>EdgeLabel</code>拆分得更细一点,如:&ldquo;个人投资&rdquo;,&ldquo;企业投资&rdquo;。</p>
</li>
<li>
<p>通过<code>RestAPI</code>发送请求时提示<code>HTTP 415 Unsupported Media Type</code></p>
<p>请求头中需要指定<code>Content-Type:application/json</code></p>
</li>
</ul>
<p>其他问题可以在对应项目的 issue 区搜索,例如 <a href="https://github.com/hugegraph/hugegraph/issues">Server-Issues</a> / <a href="https://github.com/hugegraph/hugegraph-loader/issues">Loader Issues</a></p>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-3ed7a32fc6a58bb9d03dcd00dc874ba8">7 - QUERY LANGUAGE</h1>
</div>
<div class="td-content" style="">
<h1 id="pg-2696905b5b6cbdf2ad7f78085bd6baa9">7.1 - HugeGraph Gremlin</h1>
<h3 id="概述">概述</h3>
<p>HugeGraph支持<a href="https://tinkerpop.apache.org">Apache TinkerPop3</a>的图形遍历查询语言<a href="https://tinkerpop.apache.org/gremlin.html">Gremlin</a>。 SQL是关系型数据库查询语言,而Gremlin是一种通用的图数据库查询语言,Gremlin可用于创建图的实体(Vertex和Edge)、修改实体内部属性、删除实体,也可执行图的查询操作。</p>
<p>Gremlin可用于创建图的实体(Vertex和Edge)、修改实体内部属性、删除实体,更主要的是可用于执行图的查询及分析操作。</p>
<h3 id="tinkerpop-features">TinkerPop Features</h3>
<p>HugeGraph实现了TinkerPop框架,但是并没有实现TinkerPop所有的特性。</p>
<p>下表列出HugeGraph对TinkerPop各种特性的支持情况:</p>
<h3 id="graph-features">Graph Features</h3>
<table>
<thead>
<tr>
<th>Name</th>
<th>Description</th>
<th>Support</th>
</tr>
</thead>
<tbody>
<tr>
<td>Computer</td>
<td>Determines if the {@code Graph} implementation supports {@link GraphComputer} based processing</td>
<td>false</td>
</tr>
<tr>
<td>Transactions</td>
<td>Determines if the {@code Graph} implementations supports transactions.</td>
<td>true</td>
</tr>
<tr>
<td>Persistence</td>
<td>Determines if the {@code Graph} implementation supports persisting it&rsquo;s contents natively to disk.This feature does not refer to every graph&rsquo;s ability to write to disk via the Gremlin IO packages(.e.g. GraphML), unless the graph natively persists to disk via those options somehow. For example,TinkerGraph does not support this feature as it is a pure in-sideEffects graph.</td>
<td>true</td>
</tr>
<tr>
<td>ThreadedTransactions</td>
<td>Determines if the {@code Graph} implementation supports threaded transactions which allow a transactionto be executed across multiple threads via {@link Transaction#createThreadedTx()}.</td>
<td>false</td>
</tr>
<tr>
<td>ConcurrentAccess</td>
<td>Determines if the {@code Graph} implementation supports more than one connection to the same instance at the same time. For example, Neo4j embedded does not support this feature because concurrent access to the same database files by multiple instances is not possible. However, Neo4j HA could support this feature as each new {@code Graph} instance coordinates with the Neo4j cluster allowing multiple instances to operate on the same database.</td>
<td>false</td>
</tr>
</tbody>
</table>
<h3 id="vertex-features">Vertex Features</h3>
<table>
<thead>
<tr>
<th>Name</th>
<th>Description</th>
<th>Support</th>
</tr>
</thead>
<tbody>
<tr>
<td>UserSuppliedIds</td>
<td>Determines if an {@link Element} can have a user defined identifier. Implementation that do not support this feature will be expected to auto-generate unique identifiers. In other words, if the {@link Graph} allows {@code graph.addVertex(id,x)} to work and thus set the identifier of the newly added {@link Vertex} to the value of {@code x} then this feature should return true. In this case, {@code x} is assumed to be an identifier datat ype that the {@link Graph} will accept.</td>
<td>false</td>
</tr>
<tr>
<td>NumericIds</td>
<td>Determines if an {@link Element} has numeric identifiers as their internal representation. In other words,if the value returned from {@link Element#id()} is a numeric value then this method should be return {@code true}. Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite.</td>
<td>false</td>
</tr>
<tr>
<td>StringIds</td>
<td>Determines if an {@link Element} has string identifiers as their internal representation. In other words, if the value returned from {@link Element#id()} is a string value then this method should be return {@code true}. Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite.</td>
<td>false</td>
</tr>
<tr>
<td>UuidIds</td>
<td>Determines if an {@link Element} has UUID identifiers as their internal representation. In other words,if the value returned from {@link Element#id()} is a {@link UUID} value then this method should be return {@code true}.Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite.</td>
<td>false</td>
</tr>
<tr>
<td>CustomIds</td>
<td>Determines if an {@link Element} has a specific custom object as their internal representation.In other words, if the value returned from {@link Element#id()} is a type defined by the graph implementations, such as OrientDB&rsquo;s {@code Rid}, then this method should be return {@code true}.Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite.</td>
<td>false</td>
</tr>
<tr>
<td>AnyIds</td>
<td>Determines if an {@link Element} any Java object is a suitable identifier. TinkerGraph is a good example of a {@link Graph} that can support this feature, as it can use any {@link Object} as a value for the identifier. Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite. This setting should only return {@code true} if {@link #supportsUserSuppliedIds()} is {@code true}.</td>
<td>false</td>
</tr>
<tr>
<td>AddProperty</td>
<td>Determines if an {@link Element} allows properties to be added. This feature is set independently from supporting &ldquo;data types&rdquo; and refers to support of calls to {@link Element#property(String, Object)}.</td>
<td>true</td>
</tr>
<tr>
<td>RemoveProperty</td>
<td>Determines if an {@link Element} allows properties to be removed.</td>
<td>true</td>
</tr>
<tr>
<td>AddVertices</td>
<td>Determines if a {@link Vertex} can be added to the {@code Graph}.</td>
<td>true</td>
</tr>
<tr>
<td>MultiProperties</td>
<td>Determines if a {@link Vertex} can support multiple properties with the same key.</td>
<td>false</td>
</tr>
<tr>
<td>DuplicateMultiProperties</td>
<td>Determines if a {@link Vertex} can support non-unique values on the same key. For this valueto be {@code true}, then {@link #supportsMetaProperties()} must also return true. By default this method, just returns what {@link #supportsMultiProperties()} returns.</td>
<td>false</td>
</tr>
<tr>
<td>MetaProperties</td>
<td>Determines if a {@link Vertex} can support properties on vertex properties. It is assumed that a graph will support all the same data types for meta-properties that are supported for regular properties.</td>
<td>false</td>
</tr>
<tr>
<td>RemoveVertices</td>
<td>Determines if a {@link Vertex} can be removed from the {@code Graph}.</td>
<td>true</td>
</tr>
</tbody>
</table>
<h3 id="edge-features">Edge Features</h3>
<table>
<thead>
<tr>
<th>Name</th>
<th>Description</th>
<th>Support</th>
</tr>
</thead>
<tbody>
<tr>
<td>UserSuppliedIds</td>
<td>Determines if an {@link Element} can have a user defined identifier. Implementation that do not support this feature will be expected to auto-generate unique identifiers. In other words, if the {@link Graph} allows {@code graph.addVertex(id,x)} to work and thus set the identifier of the newly added {@link Vertex} to the value of {@code x} then this feature should return true. In this case, {@code x} is assumed to be an identifier datat ype that the {@link Graph} will accept.</td>
<td>false</td>
</tr>
<tr>
<td>NumericIds</td>
<td>Determines if an {@link Element} has numeric identifiers as their internal representation. In other words,if the value returned from {@link Element#id()} is a numeric value then this method should be return {@code true}. Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite.</td>
<td>false</td>
</tr>
<tr>
<td>StringIds</td>
<td>Determines if an {@link Element} has string identifiers as their internal representation. In other words, if the value returned from {@link Element#id()} is a string value then this method should be return {@code true}. Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite.</td>
<td>false</td>
</tr>
<tr>
<td>UuidIds</td>
<td>Determines if an {@link Element} has UUID identifiers as their internal representation. In other words,if the value returned from {@link Element#id()} is a {@link UUID} value then this method should be return {@code true}.Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite.</td>
<td>false</td>
</tr>
<tr>
<td>CustomIds</td>
<td>Determines if an {@link Element} has a specific custom object as their internal representation.In other words, if the value returned from {@link Element#id()} is a type defined by the graph implementations, such as OrientDB&rsquo;s {@code Rid}, then this method should be return {@code true}.Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite.</td>
<td>false</td>
</tr>
<tr>
<td>AnyIds</td>
<td>Determines if an {@link Element} any Java object is a suitable identifier. TinkerGraph is a good example of a {@link Graph} that can support this feature, as it can use any {@link Object} as a value for the identifier. Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite. This setting should only return {@code true} if {@link #supportsUserSuppliedIds()} is {@code true}.</td>
<td>false</td>
</tr>
<tr>
<td>AddProperty</td>
<td>Determines if an {@link Element} allows properties to be added. This feature is set independently from supporting &ldquo;data types&rdquo; and refers to support of calls to {@link Element#property(String, Object)}.</td>
<td>true</td>
</tr>
<tr>
<td>RemoveProperty</td>
<td>Determines if an {@link Element} allows properties to be removed.</td>
<td>true</td>
</tr>
<tr>
<td>AddEdges</td>
<td>Determines if an {@link Edge} can be added to a {@code Vertex}.</td>
<td>true</td>
</tr>
<tr>
<td>RemoveEdges</td>
<td>Determines if an {@link Edge} can be removed from a {@code Vertex}.</td>
<td>true</td>
</tr>
</tbody>
</table>
<h3 id="data-type-features">Data Type Features</h3>
<table>
<thead>
<tr>
<th>Name</th>
<th>Description</th>
<th>Support</th>
</tr>
</thead>
<tbody>
<tr>
<td>BooleanValues</td>
<td></td>
<td>true</td>
</tr>
<tr>
<td>ByteValues</td>
<td></td>
<td>true</td>
</tr>
<tr>
<td>DoubleValues</td>
<td></td>
<td>true</td>
</tr>
<tr>
<td>FloatValues</td>
<td></td>
<td>true</td>
</tr>
<tr>
<td>IntegerValues</td>
<td></td>
<td>true</td>
</tr>
<tr>
<td>LongValues</td>
<td></td>
<td>true</td>
</tr>
<tr>
<td>MapValues</td>
<td>Supports setting of a {@code Map} value. The assumption is that the {@code Map} can containarbitrary serializable values that may or may not be defined as a feature itself</td>
<td>false</td>
</tr>
<tr>
<td>MixedListValues</td>
<td>Supports setting of a {@code List} value. The assumption is that the {@code List} can containarbitrary serializable values that may or may not be defined as a feature itself. As this{@code List} is &ldquo;mixed&rdquo; it does not need to contain objects of the same type.</td>
<td>false</td>
</tr>
<tr>
<td>BooleanArrayValues</td>
<td></td>
<td>false</td>
</tr>
<tr>
<td>ByteArrayValues</td>
<td></td>
<td>true</td>
</tr>
<tr>
<td>DoubleArrayValues</td>
<td></td>
<td>false</td>
</tr>
<tr>
<td>FloatArrayValues</td>
<td></td>
<td>false</td>
</tr>
<tr>
<td>IntegerArrayValues</td>
<td></td>
<td>false</td>
</tr>
<tr>
<td>LongArrayValues</td>
<td></td>
<td>false</td>
</tr>
<tr>
<td>SerializableValues</td>
<td></td>
<td>false</td>
</tr>
<tr>
<td>StringArrayValues</td>
<td></td>
<td>false</td>
</tr>
<tr>
<td>StringValues</td>
<td></td>
<td>true</td>
</tr>
<tr>
<td>UniformListValues</td>
<td>Supports setting of a {@code List} value. The assumption is that the {@code List} can containarbitrary serializable values that may or may not be defined as a feature itself. As this{@code List} is &ldquo;uniform&rdquo; it must contain objects of the same type.</td>
<td>false</td>
</tr>
</tbody>
</table>
<h3 id="gremlin的步骤">Gremlin的步骤</h3>
<p>HugeGraph支持Gremlin的所有步骤。有关Gremlin的完整参考信息,请参与<a href="http://tinkerpop.apache.org/docs/current/reference/">Gremlin官网</a></p>
<table>
<thead>
<tr>
<th>步骤</th>
<th>说明</th>
<th>文档</th>
</tr>
</thead>
<tbody>
<tr>
<td>addE</td>
<td>在两个顶点之间添加边</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#addedge-step">addE step</a></td>
</tr>
<tr>
<td>addV</td>
<td>将顶点添加到图形</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#addvertex-step">addV step</a></td>
</tr>
<tr>
<td>and</td>
<td>确保所有遍历都返回值</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#add-step">and step</a></td>
</tr>
<tr>
<td>as</td>
<td>用于向步骤的输出分配变量的步骤调制器</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#as-step">as step</a></td>
</tr>
<tr>
<td>by</td>
<td><code>group</code><code>order</code>配合使用的步骤调制器</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#by-step">by step</a></td>
</tr>
<tr>
<td>coalesce</td>
<td>返回第一个返回结果的遍历</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#coalesce-step">coalesce step</a></td>
</tr>
<tr>
<td>constant</td>
<td>返回常量值。 与<code>coalesce</code>配合使用</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#constant-step">constant step</a></td>
</tr>
<tr>
<td>count</td>
<td>从遍历返回计数</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#addedge-step">count step</a></td>
</tr>
<tr>
<td>dedup</td>
<td>返回已删除重复内容的值</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#dedup-step">dedup step</a></td>
</tr>
<tr>
<td>drop</td>
<td>丢弃值(顶点/边缘)</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#drop-step">drop step</a></td>
</tr>
<tr>
<td>fold</td>
<td>充当用于计算结果聚合值的屏障</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#fold-step">fold step</a></td>
</tr>
<tr>
<td>group</td>
<td>根据指定的标签将值分组</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#group-step">group step</a></td>
</tr>
<tr>
<td>has</td>
<td>用于筛选属性、顶点和边缘。 支持<code>hasLabel</code><code>hasId</code><code>hasNot</code><code>has</code> 变体</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#has-step">has step</a></td>
</tr>
<tr>
<td>inject</td>
<td>将值注入流中</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#inject-step">inject step</a></td>
</tr>
<tr>
<td>is</td>
<td>用于通过布尔表达式执行筛选器</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#is-step">is step</a></td>
</tr>
<tr>
<td>limit</td>
<td>用于限制遍历中的项数</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#limit-step">limit step</a></td>
</tr>
<tr>
<td>local</td>
<td>本地包装遍历的某个部分,类似于子查询</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#local-step">local step</a></td>
</tr>
<tr>
<td>not</td>
<td>用于生成筛选器的求反结果</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#not-step">not step</a></td>
</tr>
<tr>
<td>optional</td>
<td>如果生成了某个结果,则返回指定遍历的结果,否则返回调用元素</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#optional-step">optional step</a></td>
</tr>
<tr>
<td>or</td>
<td>确保至少有一个遍历会返回值</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#or-step">or step</a></td>
</tr>
<tr>
<td>order</td>
<td>按指定的排序顺序返回结果</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#order-step">order step</a></td>
</tr>
<tr>
<td>path</td>
<td>返回遍历的完整路径</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#addedge-step">path step</a></td>
</tr>
<tr>
<td>project</td>
<td>将属性投影为映射</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#project-step">project step</a></td>
</tr>
<tr>
<td>properties</td>
<td>返回指定标签的属性</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#properties-step">properties step</a></td>
</tr>
<tr>
<td>range</td>
<td>根据指定的值范围进行筛选</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#range-step">range step</a></td>
</tr>
<tr>
<td>repeat</td>
<td>将步骤重复指定的次数。 用于循环</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#repeat-step">repeat step</a></td>
</tr>
<tr>
<td>sample</td>
<td>用于对遍历返回的结果采样</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#sample-step">sample step</a></td>
</tr>
<tr>
<td>select</td>
<td>用于投影遍历返回的结果</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#select-step">select step</a></td>
</tr>
<tr>
<td>store</td>
<td>用于遍历返回的非阻塞聚合</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#store-step">store step</a></td>
</tr>
<tr>
<td>tree</td>
<td>将顶点中的路径聚合到树中</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#tree-step">tree step</a></td>
</tr>
<tr>
<td>unfold</td>
<td>将迭代器作为步骤展开</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#unfold-step">unfold step</a></td>
</tr>
<tr>
<td>union</td>
<td>合并多个遍历返回的结果</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#union-step">union step</a></td>
</tr>
<tr>
<td>V</td>
<td>包括顶点与边之间的遍历所需的步骤:<code>V</code><code>E</code><code>out</code><code>in</code><code>both</code><code>outE</code><code>inE</code><code>bothE</code><code>outV</code><code>inV</code><code>bothV</code><code>otherV</code></td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#vertex-steps">order step</a></td>
</tr>
<tr>
<td>where</td>
<td>用于筛选遍历返回的结果。 支持 <code>eq</code><code>neq</code><code>lt</code><code>lte</code><code>gt</code><code>gte</code><code>between</code> 运算符</td>
<td><a href="http://tinkerpop.apache.org/docs/current/reference/#where-step">where step</a></td>
</tr>
</tbody>
</table>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-29164f631ea2ad7e883c0ba00a843508">7.2 - HugeGraph Examples</h1>
<h3 id="1-概述">1 概述</h3>
<p>本示例将<a href="http://s3.thinkaurelius.com/docs/titan/1.0.0/getting-started.html">TitanDB Getting Started</a> 为模板来演示HugeGraph的使用方法。通过对比HugeGraph和TitanDB,了解HugeGraph和TitanDB的差异。</p>
<h4 id="11-hugegraph与titandb的异同">1.1 HugeGraph与TitanDB的异同</h4>
<p>HugeGraph和TitanDB都是基于<a href="https://tinkerpop.apache.org">Apache TinkerPop3</a>框架的图数据库,均支持[Gremlin](<a href="https://tinkerpop.apache">https://tinkerpop.apache</a>
.org/gremlin.html)图查询语言,在使用方法和接口方面具有很多相似的地方。然而HugeGraph是全新设计开发的,其代码结构清晰,功能较为丰富,接口更为友好等特点。</p>
<p>HugeGraph相对于TitanDB而言,其主要特点如下:</p>
<ul>
<li>HugeGraph目前有HugeGraph-API、HugeGraph-Client、HugeGraph-Loader、HugeGraph-Studio、HugeGraph-Spark等完善的工具组件,可以完成系统集成、数据载入、图可视化查询、Spark 连接等功能;</li>
<li>HugeGraph具有Server和Client的概念,第三方系统可以通过jar引用、client、api等多种方式接入,而TitanDB仅支持jar引用方式接入。</li>
<li>HugeGraph的Schema需要显式定义,所有的插入和查询均需要通过严格的schema校验,目前暂不支持schema的隐式创建。</li>
<li>HugeGraph充分利用后端存储系统的特点来实现数据高效存取,而TitanDB以统一的Kv结构无视后端的差异性。</li>
<li>HugeGraph的更新操作可以实现按需操作(例如:更新某个属性)性能更好。TitanDB的更新是read and update方式。</li>
<li>HugeGraph的VertexId和EdgeId均支持拼接,可实现自动去重,同时查询性能更好。TitanDB的所有Id均是自动生成,查询需要经索引。</li>
</ul>
<h4 id="12-人物关系图谱">1.2 人物关系图谱</h4>
<p>本示例通过Property Graph Model图数据模型来描述希腊神话中各人物角色的关系(也被成为人物关系图谱),具体关系详见下图。</p>
<center>
<img src="/docs/images/graph-of-gods.png" alt="image">
</center>
<p>其中,圆形节点代表实体(Vertex),箭头代表关系(Edge),方框的内容为属性。</p>
<p>该关系图谱中有两类顶点,分别是人物(character)和位置(location)如下表:</p>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>属性</th>
</tr>
</thead>
<tbody>
<tr>
<td>character</td>
<td>vertex</td>
<td>name,age,type</td>
</tr>
<tr>
<td>location</td>
<td>vertex</td>
<td>name</td>
</tr>
</tbody>
</table>
<p>有六种关系,分别是父子(father)、母子(mother)、兄弟(brother)、战斗(battled)、居住(lives)、拥有宠物(pet) 关于关系图谱的具体信息如下:</p>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>source vertex label</th>
<th>target vertex label</th>
<th>属性</th>
</tr>
</thead>
<tbody>
<tr>
<td>father</td>
<td>edge</td>
<td>character</td>
<td>character</td>
<td>-</td>
</tr>
<tr>
<td>mother</td>
<td>edge</td>
<td>character</td>
<td>character</td>
<td>-</td>
</tr>
<tr>
<td>brother</td>
<td>edge</td>
<td>character</td>
<td>character</td>
<td>-</td>
</tr>
<tr>
<td>pet</td>
<td>edge</td>
<td>character</td>
<td>character</td>
<td>-</td>
</tr>
<tr>
<td>lives</td>
<td>edge</td>
<td>character</td>
<td>location</td>
<td>reason</td>
</tr>
</tbody>
</table>
<p>在HugeGraph中,每个edge label只能作用于一对source vertex label和target vertex label。也就是说,如果一个图内定义了一种关系father连接character和character,那farther就不能再连接其他的vertex labels。</p>
<p>因此本例子将原TitanDB中的monster, god, human, demigod均使用相同的<code>vertex label: character</code>来表示, 同时增加属性type来标识人物的类型。<code>edge label</code>与原TitanDB保持一致。当然为了满足<code>edge label</code>约束,也可以通过调整<code>edge label</code><code>name</code>来实现。</p>
<h3 id="2-graph-schema-and-data-ingest-examples">2 Graph Schema and Data Ingest Examples</h3>
<p>HugeGraph需要显示创建Schema,因此需要依次创建PropertyKey、VertexLabel、EdgeLabel,如果有需要索引还需要创建IndexLabel。</p>
<h4 id="21-graph-schema">2.1 Graph Schema</h4>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#000">schema</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">hugegraph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">schema</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asInt</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;time&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asInt</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;reason&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">propertyKey</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;type&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">asText</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;type&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">nullableKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">vertexLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;location&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">primaryKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;father&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">link</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;mother&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">link</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;battled&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">link</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;time&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;lives&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">link</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;location&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">properties</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;reason&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">nullableKeys</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;reason&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;pet&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">link</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#000">schema</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">edgeLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;brother&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">link</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">ifNotExist</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">create</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span></code></pre></div><h4 id="22-graph-data">2.2 Graph Data</h4>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// add vertices
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">Vertex</span> <span style="color:#000">saturn</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;saturn&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">10000</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;type&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;titan&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">Vertex</span> <span style="color:#000">sky</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;location&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;sky&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">Vertex</span> <span style="color:#000">sea</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;location&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;sea&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">Vertex</span> <span style="color:#000">jupiter</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;jupiter&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">5000</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;type&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;god&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">Vertex</span> <span style="color:#000">neptune</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;neptune&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">4500</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;type&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;god&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">Vertex</span> <span style="color:#000">hercules</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;hercules&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">30</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;type&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;demigod&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">Vertex</span> <span style="color:#000">alcmene</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;alcmene&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">45</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;type&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;human&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">Vertex</span> <span style="color:#000">pluto</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;pluto&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;age&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">4000</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;type&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;god&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">Vertex</span> <span style="color:#000">nemean</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;nemean&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;type&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;monster&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">Vertex</span> <span style="color:#000">hydra</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;hydra&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;type&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;monster&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">Vertex</span> <span style="color:#000">cerberus</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;character&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;cerberus&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;type&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;monster&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">Vertex</span> <span style="color:#000">tartarus</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">graph</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addVertex</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">T</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">label</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;location&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;name&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;tartarus&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// add edges
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">jupiter</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;father&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">saturn</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">jupiter</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;lives&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">sky</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;reason&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;loves fresh breezes&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">jupiter</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;brother&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">neptune</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">jupiter</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;brother&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">pluto</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">neptune</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;lives&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">sea</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;reason&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;loves waves&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">neptune</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;brother&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">jupiter</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">neptune</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;brother&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">pluto</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">hercules</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;father&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">jupiter</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">hercules</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;mother&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">alcmene</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">hercules</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;battled&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">nemean</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;time&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">1</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">hercules</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;battled&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">hydra</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;time&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">2</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">hercules</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;battled&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">cerberus</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;time&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#0000cf;font-weight:bold">12</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">pluto</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;brother&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">jupiter</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">pluto</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;brother&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">neptune</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">pluto</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;lives&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">tartarus</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;reason&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#34;no fear of death&#34;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">pluto</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;pet&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">cerberus</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">cerberus</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">addEdge</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#34;lives&#34;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#000">tartarus</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span></code></pre></div><h4 id="23-indices">2.3 Indices</h4>
<p>HugeGraph默认是自动生成Id,如果用户通过<code>primaryKeys</code>指定<code>VertexLabel</code><code>primaryKeys</code>字段列表后,<code>VertexLabel</code>的Id策略将会自动切换到<code>primaryKeys</code>策略。 启用<code>primaryKeys</code>策略后,HugeGraph通过<code>vertexLabel+primaryKeys</code>拼接生成<code>VertexId</code> ,可实现自动去重,同时无需额外创建索引即可以使用<code>primaryKeys</code>中的属性进行快速查询。 例如 &ldquo;character&rdquo; 和 &ldquo;location&rdquo; 都有<code>primaryKeys(&quot;name&quot;)</code>属性,因此在不额外创建索引的情况下可以通过<code>g.V().hasLabel('character') .has('name','hercules')</code>查询vertex 。</p>
<h3 id="3-graph-traversal-examples">3 Graph Traversal Examples</h3>
<h4 id="31-traversal-query">3.1 Traversal Query</h4>
<p><strong>1. Find the grand father of hercules</strong></p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#000">g</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">V</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">hasLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;character&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">has</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;name&#39;</span><span style="color:#ce5c00;font-weight:bold">,</span><span style="color:#4e9a06">&#39;hercules&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;father&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;father&#39;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span></code></pre></div><p>也可以通过<code>repeat</code>方式:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#000">g</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">V</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">hasLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;character&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">has</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;name&#39;</span><span style="color:#ce5c00;font-weight:bold">,</span><span style="color:#4e9a06">&#39;hercules&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">repeat</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">__</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;father&#39;</span><span style="color:#ce5c00;font-weight:bold">)).</span><span style="color:#c4a000">times</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#0000cf;font-weight:bold">2</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span></code></pre></div><p><strong>2. Find the name of hercules&rsquo;s father</strong></p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#000">g</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">V</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">hasLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;character&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">has</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;name&#39;</span><span style="color:#ce5c00;font-weight:bold">,</span><span style="color:#4e9a06">&#39;hercules&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;father&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">value</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;name&#39;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span></code></pre></div><p><strong>3. Find the characters with age &gt; 100</strong></p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#000">g</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">V</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">hasLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;character&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">has</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;age&#39;</span><span style="color:#ce5c00;font-weight:bold">,</span><span style="color:#000">gt</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#0000cf;font-weight:bold">100</span><span style="color:#ce5c00;font-weight:bold">))</span>
</span></span></code></pre></div><p><strong>4. Find who are pluto&rsquo;s cohabitants</strong></p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#000">g</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">V</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">hasLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;character&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">has</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;name&#39;</span><span style="color:#ce5c00;font-weight:bold">,</span><span style="color:#4e9a06">&#39;pluto&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;lives&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">in</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;lives&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">values</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;name&#39;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span></code></pre></div><p><strong>5. Find pluto can&rsquo;t be his own cohabitant</strong></p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#000">pluto</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">g</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">V</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">hasLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;character&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">has</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;name&#39;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#39;pluto&#39;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span><span style="color:#000">g</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">V</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">pluto</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;lives&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">in</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;lives&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">where</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">is</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">neq</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">pluto</span><span style="color:#ce5c00;font-weight:bold">)).</span><span style="color:#c4a000">values</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;name&#39;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// use &#39;as&#39;
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">g</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">V</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">hasLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;character&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">has</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;name&#39;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#39;pluto&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">as</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;x&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;lives&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">in</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;lives&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">where</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">neq</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;x&#39;</span><span style="color:#ce5c00;font-weight:bold">)).</span><span style="color:#c4a000">values</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;name&#39;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span></code></pre></div><p><strong>6. Pluto&rsquo;s Brothers</strong></p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#000">pluto</span> <span style="color:#ce5c00;font-weight:bold">=</span> <span style="color:#000">g</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">V</span><span style="color:#ce5c00;font-weight:bold">().</span><span style="color:#c4a000">hasLabel</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;character&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">has</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;name&#39;</span><span style="color:#ce5c00;font-weight:bold">,</span> <span style="color:#4e9a06">&#39;pluto&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">next</span><span style="color:#ce5c00;font-weight:bold">()</span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// where do pluto&#39;s brothers live?
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">g</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">V</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">pluto</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;brother&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;lives&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">values</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;name&#39;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// which brother lives in which place?
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">g</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">V</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">pluto</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;brother&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">as</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;god&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;lives&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">as</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;place&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">select</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;god&#39;</span><span style="color:#ce5c00;font-weight:bold">,</span><span style="color:#4e9a06">&#39;place&#39;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// what is the name of the brother and the name of the place?
</span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000">g</span><span style="color:#ce5c00;font-weight:bold">.</span><span style="color:#c4a000">V</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#000">pluto</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;brother&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">as</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;god&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">out</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;lives&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">as</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;place&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">select</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;god&#39;</span><span style="color:#ce5c00;font-weight:bold">,</span><span style="color:#4e9a06">&#39;place&#39;</span><span style="color:#ce5c00;font-weight:bold">).</span><span style="color:#c4a000">by</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">&#39;name&#39;</span><span style="color:#ce5c00;font-weight:bold">)</span>
</span></span></code></pre></div><p>推荐使用<a href="/docs/quickstart/hugegraph-studio">HugeGraph-Studio</a> 通过可视化的方式来执行上述代码。另外也可以通过HugeGraph-Client、HugeApi、GremlinConsole和GremlinDriver等多种方式执行上述代码。</p>
<h4 id="32-总结">3.2 总结</h4>
<p>HugeGraph 目前支持 <code>Gremlin</code> 的语法,用户可以通过 <code>Gremlin / REST-API</code> 实现各种查询需求。</p>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-f0a22a813c843322c0d360d952e434ce">8 - PERFORMANCE</h1>
</div>
<div class="td-content" style="">
<h1 id="pg-63f6d63db3ee3a5270fc1ca0a0c0e181">8.1 - HugeGraph BenchMark Performance</h1>
<h3 id="1-测试环境">1 测试环境</h3>
<h4 id="11-硬件信息">1.1 硬件信息</h4>
<table>
<thead>
<tr>
<th>CPU</th>
<th>Memory</th>
<th>网卡</th>
<th>磁盘</th>
</tr>
</thead>
<tbody>
<tr>
<td>48 Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz</td>
<td>128G</td>
<td>10000Mbps</td>
<td>750GB SSD</td>
</tr>
</tbody>
</table>
<h4 id="12-软件信息">1.2 软件信息</h4>
<h5 id="121-测试用例">1.2.1 测试用例</h5>
<p>测试使用<a href="https://github.com/socialsensor/graphdb-benchmarks">graphdb-benchmark</a>,一个图数据库测试集。该测试集主要包含4类测试:</p>
<ul>
<li>
<p>Massive Insertion,批量插入顶点和边,一定数量的顶点或边一次性提交</p>
</li>
<li>
<p>Single Insertion,单条插入,每个顶点或者每条边立即提交</p>
</li>
<li>
<p>Query,主要是图数据库的基本查询操作:</p>
<ul>
<li>Find Neighbors,查询所有顶点的邻居</li>
<li>Find Adjacent Nodes,查询所有边的邻接顶点</li>
<li>Find Shortest Path,查询第一个顶点到100个随机顶点的最短路径</li>
</ul>
</li>
<li>
<p>Clustering,基于Louvain Method的社区发现算法</p>
</li>
</ul>
<h5 id="122-测试数据集">1.2.2 测试数据集</h5>
<p>测试使用人造数据和真实数据</p>
<ul>
<li>
<p>MIW、SIW和QW使用SNAP数据集</p>
<ul>
<li>
<p><a href="http://snap.stanford.edu/data/email-Enron.html">Enron Dataset</a></p>
</li>
<li>
<p><a href="http://snap.stanford.edu/data/amazon0601.html">Amazon dataset</a></p>
</li>
<li>
<p><a href="http://snap.stanford.edu/data/com-Youtube.html">Youtube dataset</a></p>
</li>
<li>
<p><a href="http://snap.stanford.edu/data/com-LiveJournal.html">LiveJournal dataset</a></p>
</li>
</ul>
</li>
<li>
<p>CW使用<a href="https://sites.google.com/site/andrealancichinetti/files">LFR-Benchmark generator</a>生成的人造数据</p>
</li>
</ul>
<h6 id="本测试用到的数据集规模">本测试用到的数据集规模</h6>
<table>
<thead>
<tr>
<th>名称</th>
<th>vertex数目</th>
<th>edge数目</th>
<th>文件大小</th>
</tr>
</thead>
<tbody>
<tr>
<td>email-enron.txt</td>
<td>36,691</td>
<td>367,661</td>
<td>4MB</td>
</tr>
<tr>
<td>com-youtube.ungraph.txt</td>
<td>1,157,806</td>
<td>2,987,624</td>
<td>38.7MB</td>
</tr>
<tr>
<td>amazon0601.txt</td>
<td>403,393</td>
<td>3,387,388</td>
<td>47.9MB</td>
</tr>
<tr>
<td>com-lj.ungraph.txt</td>
<td>3997961</td>
<td>34681189</td>
<td>479MB</td>
</tr>
</tbody>
</table>
<h4 id="13-服务配置">1.3 服务配置</h4>
<ul>
<li>
<p>HugeGraph版本:0.5.6,RestServer和Gremlin Server和backends都在同一台服务器上</p>
<ul>
<li>RocksDB版本:rocksdbjni-5.8.6</li>
</ul>
</li>
<li>
<p>Titan版本:0.5.4, 使用thrift+Cassandra模式</p>
<ul>
<li>Cassandra版本:cassandra-3.10,commitlog和data共用SSD</li>
</ul>
</li>
<li>
<p>Neo4j版本:2.0.1</p>
</li>
</ul>
<blockquote>
<p>graphdb-benchmark适配的Titan版本为0.5.4</p>
</blockquote>
<h3 id="2-测试结果">2 测试结果</h3>
<h4 id="21-batch插入性能">2.1 Batch插入性能</h4>
<table>
<thead>
<tr>
<th>Backend</th>
<th>email-enron(30w)</th>
<th>amazon0601(300w)</th>
<th>com-youtube.ungraph(300w)</th>
<th>com-lj.ungraph(3000w)</th>
</tr>
</thead>
<tbody>
<tr>
<td>HugeGraph</td>
<td>0.629</td>
<td>5.711</td>
<td>5.243</td>
<td>67.033</td>
</tr>
<tr>
<td>Titan</td>
<td>10.15</td>
<td>108.569</td>
<td>150.266</td>
<td>1217.944</td>
</tr>
<tr>
<td>Neo4j</td>
<td>3.884</td>
<td>18.938</td>
<td>24.890</td>
<td>281.537</td>
</tr>
</tbody>
</table>
<p><em>说明</em></p>
<ul>
<li>表头&quot;()&ldquo;中数据是数据规模,以边为单位</li>
<li>表中数据是批量插入的时间,单位是s</li>
<li>例如,HugeGraph使用RocksDB插入amazon0601数据集的300w条边,花费5.711s</li>
</ul>
<h5 id="结论">结论</h5>
<ul>
<li>批量插入性能 HugeGraph(RocksDB) &gt; Neo4j &gt; Titan(thrift+Cassandra)</li>
</ul>
<h4 id="22-遍历性能">2.2 遍历性能</h4>
<h5 id="221-术语说明">2.2.1 术语说明</h5>
<ul>
<li>FN(Find Neighbor), 遍历所有vertex, 根据vertex查邻接edge, 通过edge和vertex查other vertex</li>
<li>FA(Find Adjacent), 遍历所有edge,根据edge获得source vertex和target vertex</li>
</ul>
<h5 id="222-fn性能">2.2.2 FN性能</h5>
<table>
<thead>
<tr>
<th>Backend</th>
<th>email-enron(3.6w)</th>
<th>amazon0601(40w)</th>
<th>com-youtube.ungraph(120w)</th>
<th>com-lj.ungraph(400w)</th>
</tr>
</thead>
<tbody>
<tr>
<td>HugeGraph</td>
<td>4.072</td>
<td>45.118</td>
<td>66.006</td>
<td>609.083</td>
</tr>
<tr>
<td>Titan</td>
<td>8.084</td>
<td>92.507</td>
<td>184.543</td>
<td>1099.371</td>
</tr>
<tr>
<td>Neo4j</td>
<td>2.424</td>
<td>10.537</td>
<td>11.609</td>
<td>106.919</td>
</tr>
</tbody>
</table>
<p><em>说明</em></p>
<ul>
<li>表头&rdquo;()&ldquo;中数据是数据规模,以顶点为单位</li>
<li>表中数据是遍历顶点花费的时间,单位是s</li>
<li>例如,HugeGraph使用RocksDB后端遍历amazon0601的所有顶点,并查找邻接边和另一顶点,总共耗时45.118s</li>
</ul>
<h5 id="223-fa性能">2.2.3 FA性能</h5>
<table>
<thead>
<tr>
<th>Backend</th>
<th>email-enron(30w)</th>
<th>amazon0601(300w)</th>
<th>com-youtube.ungraph(300w)</th>
<th>com-lj.ungraph(3000w)</th>
</tr>
</thead>
<tbody>
<tr>
<td>HugeGraph</td>
<td>1.540</td>
<td>10.764</td>
<td>11.243</td>
<td>151.271</td>
</tr>
<tr>
<td>Titan</td>
<td>7.361</td>
<td>93.344</td>
<td>169.218</td>
<td>1085.235</td>
</tr>
<tr>
<td>Neo4j</td>
<td>1.673</td>
<td>4.775</td>
<td>4.284</td>
<td>40.507</td>
</tr>
</tbody>
</table>
<p><em>说明</em></p>
<ul>
<li>表头&rdquo;()&ldquo;中数据是数据规模,以边为单位</li>
<li>表中数据是遍历边花费的时间,单位是s</li>
<li>例如,HugeGraph使用RocksDB后端遍历amazon0601的所有边,并查询每条边的两个顶点,总共耗时10.764s</li>
</ul>
<h6 id="结论-1">结论</h6>
<ul>
<li>遍历性能 Neo4j &gt; HugeGraph(RocksDB) &gt; Titan(thrift+Cassandra)</li>
</ul>
<h4 id="23-hugegraph-图常用分析方法性能">2.3 HugeGraph-图常用分析方法性能</h4>
<h5 id="术语说明">术语说明</h5>
<ul>
<li>FS(Find Shortest Path), 寻找最短路径</li>
<li>K-neighbor,从起始vertex出发,通过K跳边能够到达的所有顶点, 包括1, 2, 3&hellip;(K-1), K跳边可达vertex</li>
<li>K-out, 从起始vertex出发,恰好经过K跳out边能够到达的顶点</li>
</ul>
<h5 id="fs性能">FS性能</h5>
<table>
<thead>
<tr>
<th>Backend</th>
<th>email-enron(30w)</th>
<th>amazon0601(300w)</th>
<th>com-youtube.ungraph(300w)</th>
<th>com-lj.ungraph(3000w)</th>
</tr>
</thead>
<tbody>
<tr>
<td>HugeGraph</td>
<td>0.494</td>
<td>0.103</td>
<td>3.364</td>
<td>8.155</td>
</tr>
<tr>
<td>Titan</td>
<td>11.818</td>
<td>0.239</td>
<td>377.709</td>
<td>575.678</td>
</tr>
<tr>
<td>Neo4j</td>
<td>1.719</td>
<td>1.800</td>
<td>1.956</td>
<td>8.530</td>
</tr>
</tbody>
</table>
<p><em>说明</em></p>
<ul>
<li>表头&rdquo;()&ldquo;中数据是数据规模,以边为单位</li>
<li>表中数据是找到<strong>从第一个顶点出发到达随机选择的100个顶点的最短路径</strong>的时间,单位是s</li>
<li>例如,HugeGraph使用RocksDB后端在图amazon0601中查找第一个顶点到100个随机顶点的最短路径,总共耗时0.103s</li>
</ul>
<h6 id="结论-2">结论</h6>
<ul>
<li>在数据规模小或者顶点关联关系少的场景下,HugeGraph性能优于Neo4j和Titan</li>
<li>随着数据规模增大且顶点的关联度增高,HugeGraph与Neo4j性能趋近,都远高于Titan</li>
</ul>
<h5 id="k-neighbor性能">K-neighbor性能</h5>
<table>
<thead>
<tr>
<th>顶点</th>
<th>深度</th>
<th>一度</th>
<th>二度</th>
<th>三度</th>
<th>四度</th>
<th>五度</th>
<th>六度</th>
</tr>
</thead>
<tbody>
<tr>
<td>v1</td>
<td>时间</td>
<td>0.031s</td>
<td>0.033s</td>
<td>0.048s</td>
<td>0.500s</td>
<td>11.27s</td>
<td>OOM</td>
</tr>
<tr>
<td>v111</td>
<td>时间</td>
<td>0.027s</td>
<td>0.034s</td>
<td>0.115</td>
<td>1.36s</td>
<td>OOM</td>
<td>&ndash;</td>
</tr>
<tr>
<td>v1111</td>
<td>时间</td>
<td>0.039s</td>
<td>0.027s</td>
<td>0.052s</td>
<td>0.511s</td>
<td>10.96s</td>
<td>OOM</td>
</tr>
</tbody>
</table>
<p><em>说明</em></p>
<ul>
<li>HugeGraph-Server的JVM内存设置为32GB,数据量过大时会出现OOM</li>
</ul>
<h5 id="k-out性能">K-out性能</h5>
<table>
<thead>
<tr>
<th>顶点</th>
<th>深度</th>
<th>一度</th>
<th>二度</th>
<th>三度</th>
<th>四度</th>
<th>五度</th>
<th>六度</th>
</tr>
</thead>
<tbody>
<tr>
<td>v1</td>
<td>时间</td>
<td>0.054s</td>
<td>0.057s</td>
<td>0.109s</td>
<td>0.526s</td>
<td>3.77s</td>
<td>OOM</td>
</tr>
<tr>
<td></td>
<td>10</td>
<td>133</td>
<td>2453</td>
<td>50,830</td>
<td>1,128,688</td>
<td></td>
<td></td>
</tr>
<tr>
<td>v111</td>
<td>时间</td>
<td>0.032s</td>
<td>0.042s</td>
<td>0.136s</td>
<td>1.25s</td>
<td>20.62s</td>
<td>OOM</td>
</tr>
<tr>
<td></td>
<td>10</td>
<td>211</td>
<td>4944</td>
<td>113150</td>
<td>2,629,970</td>
<td></td>
<td></td>
</tr>
<tr>
<td>v1111</td>
<td>时间</td>
<td>0.039s</td>
<td>0.045s</td>
<td>0.053s</td>
<td>1.10s</td>
<td>2.92s</td>
<td>OOM</td>
</tr>
<tr>
<td></td>
<td>10</td>
<td>140</td>
<td>2555</td>
<td>50825</td>
<td>1,070,230</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p><em>说明</em></p>
<ul>
<li>HugeGraph-Server的JVM内存设置为32GB,数据量过大时会出现OOM</li>
</ul>
<h6 id="结论-3">结论</h6>
<ul>
<li>FS场景,HugeGraph性能优于Neo4j和Titan</li>
<li>K-neighbor和K-out场景,HugeGraph能够实现在5度范围内秒级返回结果</li>
</ul>
<h4 id="24-图综合性能测试-cw">2.4 图综合性能测试-CW</h4>
<table>
<thead>
<tr>
<th>数据库</th>
<th>规模1000</th>
<th>规模5000</th>
<th>规模10000</th>
<th>规模20000</th>
</tr>
</thead>
<tbody>
<tr>
<td>HugeGraph(core)</td>
<td>20.804</td>
<td>242.099</td>
<td>744.780</td>
<td>1700.547</td>
</tr>
<tr>
<td>Titan</td>
<td>45.790</td>
<td>820.633</td>
<td>2652.235</td>
<td>9568.623</td>
</tr>
<tr>
<td>Neo4j</td>
<td>5.913</td>
<td>50.267</td>
<td>142.354</td>
<td>460.880</td>
</tr>
</tbody>
</table>
<p><em>说明</em></p>
<ul>
<li>&ldquo;规模&quot;以顶点为单位</li>
<li>表中数据是社区发现完成需要的时间,单位是s,例如HugeGraph使用RocksDB后端在规模10000的数据集,社区聚合不再变化,需要耗时744.780s</li>
<li>CW测试是CRUD的综合评估</li>
<li>该测试中HugeGraph跟Titan一样,没有通过client,直接对core操作</li>
</ul>
<h5 id="结论-4">结论</h5>
<ul>
<li>社区聚类算法性能 Neo4j &gt; HugeGraph &gt; Titan</li>
</ul>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-699ebe5daed825049424b7539aad30f9">8.2 - HugeGraph-API Performance</h1>
<p>HugeGraph API性能测试主要测试HugeGraph-Server对RESTful API请求的并发处理能力,包括:</p>
<ul>
<li>顶点/边的单条插入</li>
<li>顶点/边的批量插入</li>
<li>顶点/边的查询</li>
</ul>
<p>HugeGraph的每个发布版本的RESTful API的性能测试情况可以参考:</p>
<ul>
<li><a href="/docs/performance/api-preformance/hugegraph-api-0.5.6-rocksdb/">v0.5.6 stand-alone</a></li>
<li><a href="/docs/performance/api-preformance/hugegraph-api-0.5.6-cassandra/">v0.5.6 cluster</a></li>
<li><a href="/docs/performance/api-preformance/hugegraph-api-0.4.4/">v0.4.4</a></li>
<li><a href="/docs/performance/api-preformance/hugegraph-api-0.2/">v0.2</a></li>
</ul>
<blockquote>
<p>之前的版本只提供HugeGraph所支持的后端种类中性能最好的API性能测试,从0.5.6版本开始,分别提供了单机和集群的性能情况</p>
</blockquote>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-dbfafc29a5e930415f78f72c47ee67f2">8.2.1 - v0.5.6 Stand-alone(RocksDB)</h1>
<h3 id="1-测试环境">1 测试环境</h3>
<p>被压机器信息</p>
<table>
<thead>
<tr>
<th>CPU</th>
<th>Memory</th>
<th>网卡</th>
<th>磁盘</th>
</tr>
</thead>
<tbody>
<tr>
<td>48 Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz</td>
<td>128G</td>
<td>10000Mbps</td>
<td>750GB SSD,2.7T HDD</td>
</tr>
</tbody>
</table>
<ul>
<li>起压力机器信息:与被压机器同配置</li>
<li>测试工具:apache-Jmeter-2.5.1</li>
</ul>
<p>注:起压机器和被压机器在同一机房</p>
<h3 id="2-测试说明">2 测试说明</h3>
<h4 id="21-名词定义时间的单位均为ms">2.1 名词定义(时间的单位均为ms)</h4>
<ul>
<li>Samples &ndash; 本次场景中一共完成了多少个线程</li>
<li>Average &ndash; 平均响应时间</li>
<li>Median &ndash; 统计意义上面的响应时间的中值</li>
<li>90% Line &ndash; 所有线程中90%的线程的响应时间都小于xx</li>
<li>Min &ndash; 最小响应时间</li>
<li>Max &ndash; 最大响应时间</li>
<li>Error &ndash; 出错率</li>
<li>Throughput &ndash; 吞吐量</li>
<li>KB/sec &ndash; 以流量做衡量的吞吐量</li>
</ul>
<h4 id="22-底层存储">2.2 底层存储</h4>
<p>后端存储使用RocksDB,HugeGraph与RocksDB都在同一机器上启动,server相关的配置文件除主机和端口有修改外,其余均保持默认。</p>
<h3 id="3-性能结果总结">3 性能结果总结</h3>
<ol>
<li>HugeGraph单条插入顶点和边的速度在每秒1w左右</li>
<li>顶点和边的批量插入速度远大于单条插入速度</li>
<li>按id查询顶点和边的并发度可达到13000以上,且请求的平均延时小于50ms</li>
</ol>
<h3 id="4-测试结果及分析">4 测试结果及分析</h3>
<h4 id="41-batch插入">4.1 batch插入</h4>
<h5 id="411-压力上限测试">4.1.1 压力上限测试</h5>
<h6 id="测试方法">测试方法</h6>
<p>不断提升并发量,测试server仍能正常提供服务的压力上限</p>
<h6 id="压力参数">压力参数</h6>
<p>持续时间:5min</p>
<h6 id="顶点的最大插入速度">顶点的最大插入速度:</h6>
<center>
<img src="/docs/images/API-perf/v0.5.6/rocksdb/vertex_batch.png" alt="image">
</center>
<p>####### 结论:</p>
<ul>
<li>并发2200,顶点的吞吐量是2026.8,每秒可处理的数据:2026.8*200=405360/s</li>
</ul>
<h6 id="边的最大插入速度">边的最大插入速度</h6>
<center>
<img src="/docs/images/API-perf/v0.5.6/rocksdb/edge_batch.png" alt="image">
</center>
<p>####### 结论:</p>
<ul>
<li>并发900,边的吞吐量是776.9,每秒可处理的数据:776.9*500=388450/s</li>
</ul>
<h4 id="42-single插入">4.2 single插入</h4>
<h5 id="421-压力上限测试">4.2.1 压力上限测试</h5>
<h6 id="测试方法-1">测试方法</h6>
<p>不断提升并发量,测试server仍能正常提供服务的压力上限</p>
<h6 id="压力参数-1">压力参数</h6>
<ul>
<li>持续时间:5min</li>
<li>服务异常标志:错误率大于0.00%</li>
</ul>
<h6 id="顶点的单条插入">顶点的单条插入</h6>
<center>
<img src="/docs/images/API-perf/v0.5.6/rocksdb/vertex_single.png" alt="image">
</center>
<p>####### 结论:</p>
<ul>
<li>并发11500,吞吐量为10730,顶点的单条插入并发能力为11500</li>
</ul>
<h6 id="边的单条插入">边的单条插入</h6>
<center>
<img src="/docs/images/API-perf/v0.5.6/rocksdb/edge_single.png" alt="image">
</center>
<p>####### 结论:</p>
<ul>
<li>并发9000,吞吐量是8418,边的单条插入并发能力为9000</li>
</ul>
<h4 id="43-按id查询">4.3 按id查询</h4>
<h5 id="431-压力上限测试">4.3.1 压力上限测试</h5>
<h6 id="测试方法-2">测试方法</h6>
<p>不断提升并发量,测试server仍能正常提供服务的压力上限</p>
<h6 id="压力参数-2">压力参数</h6>
<ul>
<li>持续时间:5min</li>
<li>服务异常标志:错误率大于0.00%</li>
</ul>
<h6 id="顶点的按id查询">顶点的按id查询</h6>
<center>
<img src="/docs/images/API-perf/v0.5.6/rocksdb/vertex_id_query.png" alt="image">
</center>
<p>####### 结论:</p>
<ul>
<li>并发14000,吞吐量是12663,顶点的按id查询的并发能力为14000,平均延时为44ms</li>
</ul>
<h6 id="边的按id查询">边的按id查询</h6>
<center>
<img src="/docs/images/API-perf/v0.5.6/rocksdb/edge_id_query.png" alt="image">
</center>
<p>####### 结论:</p>
<ul>
<li>并发13000,吞吐量是12225,边的按id查询的并发能力为13000,平均延时为12ms</li>
</ul>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-fd5b165e28a07f1c35ab177b10e15dc8">8.2.2 - v0.5.6 Cluster(Cassandra)</h1>
<h3 id="1-测试环境">1 测试环境</h3>
<p>被压机器信息</p>
<table>
<thead>
<tr>
<th>CPU</th>
<th>Memory</th>
<th>网卡</th>
<th>磁盘</th>
</tr>
</thead>
<tbody>
<tr>
<td>48 Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz</td>
<td>128G</td>
<td>10000Mbps</td>
<td>750GB SSD,2.7T HDD</td>
</tr>
</tbody>
</table>
<ul>
<li>起压力机器信息:与被压机器同配置</li>
<li>测试工具:apache-Jmeter-2.5.1</li>
</ul>
<p>注:起压机器和被压机器在同一机房</p>
<h3 id="2-测试说明">2 测试说明</h3>
<h4 id="21-名词定义时间的单位均为ms">2.1 名词定义(时间的单位均为ms)</h4>
<ul>
<li>Samples &ndash; 本次场景中一共完成了多少个线程</li>
<li>Average &ndash; 平均响应时间</li>
<li>Median &ndash; 统计意义上面的响应时间的中值</li>
<li>90% Line &ndash; 所有线程中90%的线程的响应时间都小于xx</li>
<li>Min &ndash; 最小响应时间</li>
<li>Max &ndash; 最大响应时间</li>
<li>Error &ndash; 出错率</li>
<li>Throughput &ndash; 吞吐量</li>
<li>KB/sec &ndash; 以流量做衡量的吞吐量</li>
</ul>
<h4 id="22-底层存储">2.2 底层存储</h4>
<p>后端存储使用15节点Cassandra集群,HugeGraph与Cassandra集群位于不同的服务器,server相关的配置文件除主机和端口有修改外,其余均保持默认。</p>
<h3 id="3-性能结果总结">3 性能结果总结</h3>
<ol>
<li>HugeGraph单条插入顶点和边的速度分别为9000和4500</li>
<li>顶点和边的批量插入速度分别为5w/s和15w/s,远大于单条插入速度</li>
<li>按id查询顶点和边的并发度可达到12000以上,且请求的平均延时小于70ms</li>
</ol>
<h3 id="4-测试结果及分析">4 测试结果及分析</h3>
<h4 id="41-batch插入">4.1 batch插入</h4>
<h5 id="411-压力上限测试">4.1.1 压力上限测试</h5>
<h6 id="测试方法">测试方法</h6>
<p>不断提升并发量,测试server仍能正常提供服务的压力上限</p>
<h6 id="压力参数">压力参数</h6>
<p>持续时间:5min</p>
<h6 id="顶点的最大插入速度">顶点的最大插入速度:</h6>
<center>
<img src="/docs/images/API-perf/v0.5.6/cassandra/vertex_batch.png" alt="image">
</center>
<p>####### 结论:</p>
<ul>
<li>并发3500,顶点的吞吐量是261,每秒可处理的数据:261*200=52200/s</li>
</ul>
<h6 id="边的最大插入速度">边的最大插入速度</h6>
<center>
<img src="/docs/images/API-perf/v0.5.6/cassandra/edge_batch.png" alt="image">
</center>
<p>####### 结论:</p>
<ul>
<li>并发1000,边的吞吐量是323,每秒可处理的数据:323*500=161500/s</li>
</ul>
<h4 id="42-single插入">4.2 single插入</h4>
<h5 id="421-压力上限测试">4.2.1 压力上限测试</h5>
<h6 id="测试方法-1">测试方法</h6>
<p>不断提升并发量,测试server仍能正常提供服务的压力上限</p>
<h6 id="压力参数-1">压力参数</h6>
<ul>
<li>持续时间:5min</li>
<li>服务异常标志:错误率大于0.00%</li>
</ul>
<h6 id="顶点的单条插入">顶点的单条插入</h6>
<center>
<img src="/docs/images/API-perf/v0.5.6/cassandra/vertex_single.png" alt="image">
</center>
<p>####### 结论:</p>
<ul>
<li>并发9000,吞吐量为8400,顶点的单条插入并发能力为9000</li>
</ul>
<h6 id="边的单条插入">边的单条插入</h6>
<center>
<img src="/docs/images/API-perf/v0.5.6/cassandra/edge_single.png" alt="image">
</center>
<p>####### 结论:</p>
<ul>
<li>并发4500,吞吐量是4160,边的单条插入并发能力为4500</li>
</ul>
<h4 id="43-按id查询">4.3 按id查询</h4>
<h5 id="431-压力上限测试">4.3.1 压力上限测试</h5>
<h6 id="测试方法-2">测试方法</h6>
<p>不断提升并发量,测试server仍能正常提供服务的压力上限</p>
<h6 id="压力参数-2">压力参数</h6>
<ul>
<li>持续时间:5min</li>
<li>服务异常标志:错误率大于0.00%</li>
</ul>
<h6 id="顶点的按id查询">顶点的按id查询</h6>
<center>
<img src="/docs/images/API-perf/v0.5.6/cassandra/vertex_id_query.png" alt="image">
</center>
<p>####### 结论:</p>
<ul>
<li>并发14500,吞吐量是13576,顶点的按id查询的并发能力为14500,平均延时为11ms</li>
</ul>
<h6 id="边的按id查询">边的按id查询</h6>
<center>
<img src="/docs/images/API-perf/v0.5.6/cassandra/edge_id_query.png" alt="image">
</center>
<p>####### 结论:</p>
<ul>
<li>并发12000,吞吐量是10688,边的按id查询的并发能力为12000,平均延时为63ms</li>
</ul>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-0005aca20e30ef2795411939ccbf0fd9">8.2.3 - v0.4.4</h1>
<h3 id="1-测试环境">1 测试环境</h3>
<p>被压机器信息</p>
<table>
<thead>
<tr>
<th>机器编号</th>
<th>CPU</th>
<th>Memory</th>
<th>网卡</th>
<th>磁盘</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>24 Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz</td>
<td>61G</td>
<td>1000Mbps</td>
<td>1.4T HDD</td>
</tr>
<tr>
<td>2</td>
<td>48 Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz</td>
<td>128G</td>
<td>10000Mbps</td>
<td>750GB SSD,2.7T HDD</td>
</tr>
</tbody>
</table>
<ul>
<li>起压力机器信息:与编号 1 机器同配置</li>
<li>测试工具:apache-Jmeter-2.5.1</li>
</ul>
<p>注:起压机器和被压机器在同一机房</p>
<h3 id="2-测试说明">2 测试说明</h3>
<h4 id="21-名词定义时间的单位均为ms">2.1 名词定义(时间的单位均为ms)</h4>
<ul>
<li>Samples &ndash; 本次场景中一共完成了多少个线程</li>
<li>Average &ndash; 平均响应时间</li>
<li>Median &ndash; 统计意义上面的响应时间的中值</li>
<li>90% Line &ndash; 所有线程中90%的线程的响应时间都小于xx</li>
<li>Min &ndash; 最小响应时间</li>
<li>Max &ndash; 最大响应时间</li>
<li>Error &ndash; 出错率</li>
<li>Throughput &ndash; 吞吐量</li>
<li>KB/sec &ndash; 以流量做衡量的吞吐量</li>
</ul>
<h4 id="22-底层存储">2.2 底层存储</h4>
<p>后端存储使用RocksDB,HugeGraph与RocksDB都在同一机器上启动,server相关的配置文件除主机和端口有修改外,其余均保持默认。</p>
<h3 id="3-性能结果总结">3 性能结果总结</h3>
<ol>
<li>HugeGraph每秒能够处理的请求数目上限是7000</li>
<li>批量插入速度远大于单条插入,在服务器上测试结果达到22w edges/s,37w vertices/s</li>
<li>后端是RocksDB,增大CPU数目和内存大小可以增大批量插入的性能。CPU和内存扩大一倍,性能增加45%-60%</li>
<li>批量插入场景,使用SSD替代HDD,性能提升较小,只有3%-5%</li>
</ol>
<h3 id="4-测试结果及分析">4 测试结果及分析</h3>
<h4 id="41-batch插入">4.1 batch插入</h4>
<h5 id="411-压力上限测试">4.1.1 压力上限测试</h5>
<h6 id="测试方法">测试方法</h6>
<p>不断提升并发量,测试server仍能正常提供服务的压力上限</p>
<h6 id="压力参数">压力参数</h6>
<p>持续时间:5min</p>
<h6 id="顶点和边的最大插入速度高性能服务器使用ssd存储rocksdb数据">顶点和边的最大插入速度(高性能服务器,使用SSD存储RocksDB数据):</h6>
<center>
<img src="/docs/images/API-perf/v0.4.4/best.png" alt="image">
</center>
<h6 id="结论">结论:</h6>
<ul>
<li>并发1000,边的吞吐量是是451,每秒可处理的数据:451*500条=225500/s</li>
<li>并发2000,顶点的吞吐量是1842.4,每秒可处理的数据:1842.4*200=368480/s</li>
</ul>
<p><strong>1. CPU和内存对插入性能的影响(服务器都使用HDD存储RocksDB数据,批量插入)</strong></p>
<center>
<img src="/docs/images/API-perf/v0.4.4/cpu-memory.png" alt="image">
</center>
<h6 id="结论-1">结论:</h6>
<ul>
<li>同样使用HDD硬盘,CPU和内存增加了1倍</li>
<li>边:吞吐量从268提升至426,性能提升了约60%</li>
<li>顶点:吞吐量从1263.8提升至1842.4,性能提升了约45%</li>
</ul>
<p><strong>2. SSD和HDD对插入性能的影响(高性能服务器,批量插入)</strong></p>
<center>
<img src="/docs/images/API-perf/v0.4.4/ssd.png" alt="image">
</center>
<h6 id="结论-2">结论:</h6>
<ul>
<li>边:使用SSD吞吐量451.7,使用HDD吞吐量426.6,性能提升5%</li>
<li>顶点:使用SSD吞吐量1842.4,使用HDD吞吐量1794,性能提升约3%</li>
</ul>
<p><strong>3. 不同并发线程数对插入性能的影响(普通服务器,使用HDD存储RocksDB数据)</strong></p>
<center>
<img src="/docs/images/API-perf/v0.4.4/threads-batch.png" alt="image">
</center>
<h6 id="结论-3">结论:</h6>
<ul>
<li>顶点:1000并发,响应时间7ms和1500并发响应时间1028ms差距悬殊,且吞吐量一直保持在1300左右,因此拐点数据应该在1300 ,且并发1300时,响应时间已达到22ms,在可控范围内,相比HugeGraph 0.2(1000并发:平均响应时间8959ms),处理能力出现质的飞跃;</li>
<li>边:从1000并发到2000并发,处理时间过长,超过3s,且吞吐量几乎在270左右浮动,因此继续增大并发线程数吞吐量不会再大幅增长,270 是一个拐点,跟HugeGraph 0.2版本(1000并发:平均响应时间31849ms)相比较,处理能力提升非常明显;</li>
</ul>
<h4 id="42-single插入">4.2 single插入</h4>
<h5 id="421-压力上限测试">4.2.1 压力上限测试</h5>
<h6 id="测试方法-1">测试方法</h6>
<p>不断提升并发量,测试server仍能正常提供服务的压力上限</p>
<h6 id="压力参数-1">压力参数</h6>
<ul>
<li>持续时间:5min</li>
<li>服务异常标志:错误率大于0.00%</li>
</ul>
<center>
<img src="/docs/images/API-perf/v0.4.4/threads-single.png" alt="image">
</center>
<h6 id="结论-4">结论:</h6>
<ul>
<li>顶点:
<ul>
<li>4000并发:正常,无错误率,平均耗时小于1ms, 6000并发无错误,平均耗时5ms,在可接受范围内;</li>
<li>8000并发:存在0.01%的错误,已经无法处理,出现connection timeout错误,顶峰应该在7000左右</li>
</ul>
</li>
<li>边:
<ul>
<li>4000并发:响应时间1ms,6000并发无任何异常,平均响应时间8ms,主要差异在于 IO network recv和send以及CPU);</li>
<li>8000并发:存在0.01%的错误率,平均耗15ms,拐点应该在7000左右,跟顶点结果匹配;</li>
</ul>
</li>
</ul>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-d4233a3feb070643ef5d54a6f9c12cab">8.2.4 - v0.2</h1>
<h3 id="1-测试环境">1 测试环境</h3>
<h4 id="11-软硬件信息">1.1 软硬件信息</h4>
<p>起压和被压机器配置相同,基本参数如下:</p>
<table>
<thead>
<tr>
<th>CPU</th>
<th>Memory</th>
<th>网卡</th>
</tr>
</thead>
<tbody>
<tr>
<td>24 Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz</td>
<td>61G</td>
<td>1000Mbps</td>
</tr>
</tbody>
</table>
<p>测试工具:apache-Jmeter-2.5.1</p>
<h4 id="12-服务配置">1.2 服务配置</h4>
<ul>
<li>HugeGraph版本:0.2</li>
<li>后端存储:使用服务内嵌的cassandra-3.10,单点部署;</li>
<li>后端配置修改:修改了cassandra.yaml文件中的以下两个属性,其余选项均保持默认</li>
</ul>
<pre tabindex="0"><code> batch_size_warn_threshold_in_kb: 1000
batch_size_fail_threshold_in_kb: 1000
</code></pre><ul>
<li>HugeGraphServer 与 HugeGremlinServer 与cassandra都在同一机器上启动,server 相关的配置文件除主机和端口有修改外,其余均保持默认。</li>
</ul>
<h4 id="13-名词解释">1.3 名词解释</h4>
<ul>
<li>Samples &ndash; 本次场景中一共完成了多少个线程</li>
<li>Average &ndash; 平均响应时间</li>
<li>Median &ndash; 统计意义上面的响应时间的中值</li>
<li>90% Line &ndash; 所有线程中90%的线程的响应时间都小于xx</li>
<li>Min &ndash; 最小响应时间</li>
<li>Max &ndash; 最大响应时间</li>
<li>Error &ndash; 出错率</li>
<li>Troughput &ndash; 吞吐量Â</li>
<li>KB/sec &ndash; 以流量做衡量的吞吐量</li>
</ul>
<p><em>注:时间的单位均为ms</em></p>
<h3 id="2-测试结果">2 测试结果</h3>
<h4 id="21-schema">2.1 schema</h4>
<table>
<thead>
<tr>
<th>Label</th>
<th>Samples</th>
<th>Average</th>
<th>Median</th>
<th>90%Line</th>
<th>Min</th>
<th>Max</th>
<th>Error%</th>
<th>Throughput</th>
<th>KB/sec</th>
</tr>
</thead>
<tbody>
<tr>
<td>property_keys</td>
<td>331000</td>
<td>1</td>
<td>1</td>
<td>2</td>
<td>0</td>
<td>172</td>
<td>0.00%</td>
<td>920.7/sec</td>
<td>178.1</td>
</tr>
<tr>
<td>vertex_labels</td>
<td>331000</td>
<td>1</td>
<td>2</td>
<td>2</td>
<td>1</td>
<td>126</td>
<td>0.00%</td>
<td>920.7/sec</td>
<td>193.4</td>
</tr>
<tr>
<td>edge_labels</td>
<td>331000</td>
<td>2</td>
<td>2</td>
<td>3</td>
<td>1</td>
<td>158</td>
<td>0.00%</td>
<td>920.7/sec</td>
<td>242.8</td>
</tr>
</tbody>
</table>
<p>结论:schema的接口,在1000并发持续5分钟的压力下,平均响应时间1-2ms,无压力</p>
<h4 id="22-single-插入">2.2 single 插入</h4>
<h5 id="221-插入速率测试">2.2.1 插入速率测试</h5>
<h6 id="压力参数">压力参数</h6>
<p>测试方法:固定并发量,测试server和后端的处理速率</p>
<ul>
<li>并发量:1000</li>
<li>持续时间:5min</li>
</ul>
<h6 id="性能指标">性能指标</h6>
<table>
<thead>
<tr>
<th>Label</th>
<th>Samples</th>
<th>Average</th>
<th>Median</th>
<th>90%Line</th>
<th>Min</th>
<th>Max</th>
<th>Error%</th>
<th>Throughput</th>
<th>KB/sec</th>
</tr>
</thead>
<tbody>
<tr>
<td>single_insert_vertices</td>
<td>331000</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td>21</td>
<td>0.00%</td>
<td>920.7/sec</td>
<td>234.4</td>
</tr>
<tr>
<td>single_insert_edges</td>
<td>331000</td>
<td>2</td>
<td>2</td>
<td>3</td>
<td>1</td>
<td>53</td>
<td>0.00%</td>
<td>920.7/sec</td>
<td>309.1</td>
</tr>
</tbody>
</table>
<h6 id="结论">结论</h6>
<ul>
<li>顶点:平均响应时间1ms,每个请求插入一条数据,平均每秒处理920个请求,则每秒平均总共处理的数据为1*920约等于920条数据;</li>
<li>边:平均响应时间1ms,每个请求插入一条数据,平均每秒处理920个请求,则每秒平均总共处理的数据为1*920约等于920条数据;</li>
</ul>
<h5 id="222-压力上限测试">2.2.2 压力上限测试</h5>
<p>测试方法:不断提升并发量,测试server仍能正常提供服务的压力上限</p>
<h6 id="压力参数-1">压力参数</h6>
<ul>
<li>持续时间:5min</li>
<li>服务异常标志:错误率大于0.00%</li>
</ul>
<h6 id="性能指标-1">性能指标</h6>
<table>
<thead>
<tr>
<th>Concurrency</th>
<th>Samples</th>
<th>Average</th>
<th>Median</th>
<th>90%Line</th>
<th>Min</th>
<th>Max</th>
<th>Error%</th>
<th>Throughput</th>
<th>KB/sec</th>
</tr>
</thead>
<tbody>
<tr>
<td>2000(vertex)</td>
<td>661916</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td>3012</td>
<td>0.00%</td>
<td>1842.9/sec</td>
<td>469.1</td>
</tr>
<tr>
<td>4000(vertex)</td>
<td>1316124</td>
<td>13</td>
<td>1</td>
<td>14</td>
<td>0</td>
<td>9023</td>
<td>0.00%</td>
<td>3673.1/sec</td>
<td>935.0</td>
</tr>
<tr>
<td>5000(vertex)</td>
<td>1468121</td>
<td>1010</td>
<td>1135</td>
<td>1227</td>
<td>0</td>
<td>9223</td>
<td>0.06%</td>
<td>4095.6/sec</td>
<td>1046.0</td>
</tr>
<tr>
<td>7000(vertex)</td>
<td>1378454</td>
<td>1617</td>
<td>1708</td>
<td>1886</td>
<td>0</td>
<td>9361</td>
<td>0.08%</td>
<td>3860.3/sec</td>
<td>987.1</td>
</tr>
<tr>
<td>2000(edge)</td>
<td>629399</td>
<td>953</td>
<td>1043</td>
<td>1113</td>
<td>1</td>
<td>9001</td>
<td>0.00%</td>
<td>1750.3/sec</td>
<td>587.6</td>
</tr>
<tr>
<td>3000(edge)</td>
<td>648364</td>
<td>2258</td>
<td>2404</td>
<td>2500</td>
<td>2</td>
<td>9001</td>
<td>0.00%</td>
<td>1810.7/sec</td>
<td>607.9</td>
</tr>
<tr>
<td>4000(edge)</td>
<td>649904</td>
<td>1992</td>
<td>2112</td>
<td>2211</td>
<td>1</td>
<td>9001</td>
<td>0.06%</td>
<td>1812.5/sec</td>
<td>608.5</td>
</tr>
</tbody>
</table>
<h6 id="结论-1">结论</h6>
<ul>
<li>顶点:
<ul>
<li>4000并发:正常,无错误率,平均耗时13ms;</li>
<li>5000并发:每秒处理5000个数据的插入,就会存在0.06%的错误,应该已经处理不了了,顶峰应该在4000</li>
</ul>
</li>
<li>边:
<ul>
<li>1000并发:响应时间2ms,跟2000并发的响应时间相差较多,主要是 IO network rec和send以及CPU几乎增加了一倍);</li>
<li>2000并发:每秒处理2000个数据的插入,平均耗时953ms,平均每秒处理1750个请求;</li>
<li>3000并发:每秒处理3000个数据的插入,平均耗时2258ms,平均每秒处理1810个请求;</li>
<li>4000并发:每秒处理4000个数据的插入,平均每秒处理1812个请求;</li>
</ul>
</li>
</ul>
<h4 id="23-batch-插入">2.3 batch 插入</h4>
<h5 id="231-插入速率测试">2.3.1 插入速率测试</h5>
<h6 id="压力参数-2">压力参数</h6>
<p>测试方法:固定并发量,测试server和后端的处理速率</p>
<ul>
<li>并发量:1000</li>
<li>持续时间:5min</li>
</ul>
<h6 id="性能指标-2">性能指标</h6>
<table>
<thead>
<tr>
<th>Label</th>
<th>Samples</th>
<th>Average</th>
<th>Median</th>
<th>90%Line</th>
<th>Min</th>
<th>Max</th>
<th>Error%</th>
<th>Throughput</th>
<th>KB/sec</th>
</tr>
</thead>
<tbody>
<tr>
<td>batch_insert_vertices</td>
<td>37162</td>
<td>8959</td>
<td>9595</td>
<td>9704</td>
<td>17</td>
<td>9852</td>
<td>0.00%</td>
<td>103.4/sec</td>
<td>393.3</td>
</tr>
<tr>
<td>batch_insert_edges</td>
<td>10800</td>
<td>31849</td>
<td>34544</td>
<td>35132</td>
<td>435</td>
<td>35747</td>
<td>0.00%</td>
<td>28.8/sec</td>
<td>814.9</td>
</tr>
</tbody>
</table>
<h6 id="结论-2">结论</h6>
<ul>
<li>顶点:平均响应时间为8959ms,处理时间过长。每个请求插入199条数据,平均每秒处理103个请求,则每秒平均总共处理的数据为199*131约等于2w条数据;</li>
<li>边:平均响应时间31849ms,处理时间过长。每个请求插入499个数据,平均每秒处理28个请求,则每秒平均总共处理的数据为28*499约等于13900条数据;</li>
</ul>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-8e73cd18ae7e460700391440de46c404">8.3 - HugeGraph-Loader Performance</h1>
<h2 id="使用场景">使用场景</h2>
<p>当要批量插入的图数据(包括顶点和边)条数为billion级别及以下,或者总数据量小于TB时,可以采用<a href="/docs/quickstart/hugegraph-loader">HugeGraph-Loader</a>工具持续、高速导入图数据</p>
<h2 id="性能">性能</h2>
<blockquote>
<p>测试均采用网址数据的边数据</p>
</blockquote>
<h3 id="rocksdb单机性能">RocksDB单机性能</h3>
<ul>
<li>关闭label index,22.8w edges/s</li>
<li>开启label index,15.3w edges/s</li>
</ul>
<h3 id="cassandra集群性能">Cassandra集群性能</h3>
<ul>
<li>默认开启label index,6.3w edges/s</li>
</ul>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-0b6ebbdbce17d47f26fcb874226e5edc">8.4 - </h1>
<h3 id="1-测试环境">1 测试环境</h3>
<h4 id="11-硬件信息">1.1 硬件信息</h4>
<table>
<thead>
<tr>
<th>CPU</th>
<th>Memory</th>
<th>网卡</th>
<th>磁盘</th>
</tr>
</thead>
<tbody>
<tr>
<td>48 Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz</td>
<td>128G</td>
<td>10000Mbps</td>
<td>750GB SSD</td>
</tr>
</tbody>
</table>
<h4 id="12-软件信息">1.2 软件信息</h4>
<h5 id="121-测试用例">1.2.1 测试用例</h5>
<p>测试使用<a href="https://github.com/socialsensor/graphdb-benchmarks">graphdb-benchmark</a>,一个图数据库测试集。该测试集主要包含4类测试:</p>
<ul>
<li>
<p>Massive Insertion,批量插入顶点和边,一定数量的顶点或边一次性提交</p>
</li>
<li>
<p>Single Insertion,单条插入,每个顶点或者每条边立即提交</p>
</li>
<li>
<p>Query,主要是图数据库的基本查询操作:</p>
<ul>
<li>Find Neighbors,查询所有顶点的邻居</li>
<li>Find Adjacent Nodes,查询所有边的邻接顶点</li>
<li>Find Shortest Path,查询第一个顶点到100个随机顶点的最短路径</li>
</ul>
</li>
<li>
<p>Clustering,基于Louvain Method的社区发现算法</p>
</li>
</ul>
<h5 id="122-测试数据集">1.2.2 测试数据集</h5>
<p>测试使用人造数据和真实数据</p>
<ul>
<li>
<p>MIW、SIW和QW使用SNAP数据集</p>
<ul>
<li>
<p><a href="http://snap.stanford.edu/data/email-Enron.html">Enron Dataset</a></p>
</li>
<li>
<p><a href="http://snap.stanford.edu/data/amazon0601.html">Amazon dataset</a></p>
</li>
<li>
<p><a href="http://snap.stanford.edu/data/com-Youtube.html">Youtube dataset</a></p>
</li>
<li>
<p><a href="http://snap.stanford.edu/data/com-LiveJournal.html">LiveJournal dataset</a></p>
</li>
</ul>
</li>
<li>
<p>CW使用<a href="https://sites.google.com/site/andrealancichinetti/files">LFR-Benchmark generator</a>生成的人造数据</p>
</li>
</ul>
<h6 id="本测试用到的数据集规模">本测试用到的数据集规模</h6>
<table>
<thead>
<tr>
<th>名称</th>
<th>vertex数目</th>
<th>edge数目</th>
<th>文件大小</th>
</tr>
</thead>
<tbody>
<tr>
<td>email-enron.txt</td>
<td>36,691</td>
<td>367,661</td>
<td>4MB</td>
</tr>
<tr>
<td>com-youtube.ungraph.txt</td>
<td>1,157,806</td>
<td>2,987,624</td>
<td>38.7MB</td>
</tr>
<tr>
<td>amazon0601.txt</td>
<td>403,393</td>
<td>3,387,388</td>
<td>47.9MB</td>
</tr>
</tbody>
</table>
<h4 id="13-服务配置">1.3 服务配置</h4>
<ul>
<li>HugeGraph版本:0.4.4,RestServer和Gremlin Server和backends都在同一台服务器上</li>
<li>Cassandra版本:cassandra-3.10,commitlog和data共用SSD</li>
<li>RocksDB版本:rocksdbjni-5.8.6</li>
<li>Titan版本:0.5.4, 使用thrift+Cassandra模式</li>
</ul>
<blockquote>
<p>graphdb-benchmark适配的Titan版本为0.5.4</p>
</blockquote>
<h3 id="2-测试结果">2 测试结果</h3>
<h4 id="21-batch插入性能">2.1 Batch插入性能</h4>
<table>
<thead>
<tr>
<th>Backend</th>
<th>email-enron(30w)</th>
<th>amazon0601(300w)</th>
<th>com-youtube.ungraph(300w)</th>
</tr>
</thead>
<tbody>
<tr>
<td>Titan</td>
<td>9.516</td>
<td>88.123</td>
<td>111.586</td>
</tr>
<tr>
<td>RocksDB</td>
<td>2.345</td>
<td>14.076</td>
<td>16.636</td>
</tr>
<tr>
<td>Cassandra</td>
<td>11.930</td>
<td>108.709</td>
<td>101.959</td>
</tr>
<tr>
<td>Memory</td>
<td>3.077</td>
<td>15.204</td>
<td>13.841</td>
</tr>
</tbody>
</table>
<p><em>说明</em></p>
<ul>
<li>表头&quot;()&ldquo;中数据是数据规模,以边为单位</li>
<li>表中数据是批量插入的时间,单位是s</li>
<li>例如,HugeGraph使用RocksDB插入amazon0601数据集的300w条边,花费14.076s,速度约为21w edges/s</li>
</ul>
<h5 id="结论">结论</h5>
<ul>
<li>RocksDB和Memory后端插入性能优于Cassandra</li>
<li>HugeGraph和Titan同样使用Cassandra作为后端的情况下,插入性能接近</li>
</ul>
<h4 id="22-遍历性能">2.2 遍历性能</h4>
<h5 id="221-术语说明">2.2.1 术语说明</h5>
<ul>
<li>FN(Find Neighbor), 遍历所有vertex, 根据vertex查邻接edge, 通过edge和vertex查other vertex</li>
<li>FA(Find Adjacent), 遍历所有edge,根据edge获得source vertex和target vertex</li>
</ul>
<h5 id="222-fn性能">2.2.2 FN性能</h5>
<table>
<thead>
<tr>
<th>Backend</th>
<th>email-enron(3.6w)</th>
<th>amazon0601(40w)</th>
<th>com-youtube.ungraph(120w)</th>
</tr>
</thead>
<tbody>
<tr>
<td>Titan</td>
<td>7.724</td>
<td>70.935</td>
<td>128.884</td>
</tr>
<tr>
<td>RocksDB</td>
<td>8.876</td>
<td>65.852</td>
<td>63.388</td>
</tr>
<tr>
<td>Cassandra</td>
<td>13.125</td>
<td>126.959</td>
<td>102.580</td>
</tr>
<tr>
<td>Memory</td>
<td>22.309</td>
<td>207.411</td>
<td>165.609</td>
</tr>
</tbody>
</table>
<p><em>说明</em></p>
<ul>
<li>表头&rdquo;()&ldquo;中数据是数据规模,以顶点为单位</li>
<li>表中数据是遍历顶点花费的时间,单位是s</li>
<li>例如,HugeGraph使用RocksDB后端遍历amazon0601的所有顶点,并查找邻接边和另一顶点,总共耗时65.852s</li>
</ul>
<h5 id="223-fa性能">2.2.3 FA性能</h5>
<table>
<thead>
<tr>
<th>Backend</th>
<th>email-enron(30w)</th>
<th>amazon0601(300w)</th>
<th>com-youtube.ungraph(300w)</th>
</tr>
</thead>
<tbody>
<tr>
<td>Titan</td>
<td>7.119</td>
<td>63.353</td>
<td>115.633</td>
</tr>
<tr>
<td>RocksDB</td>
<td>6.032</td>
<td>64.526</td>
<td>52.721</td>
</tr>
<tr>
<td>Cassandra</td>
<td>9.410</td>
<td>102.766</td>
<td>94.197</td>
</tr>
<tr>
<td>Memory</td>
<td>12.340</td>
<td>195.444</td>
<td>140.89</td>
</tr>
</tbody>
</table>
<p><em>说明</em></p>
<ul>
<li>表头&rdquo;()&ldquo;中数据是数据规模,以边为单位</li>
<li>表中数据是遍历边花费的时间,单位是s</li>
<li>例如,HugeGraph使用RocksDB后端遍历amazon0601的所有边,并查询每条边的两个顶点,总共耗时64.526s</li>
</ul>
<h6 id="结论-1">结论</h6>
<ul>
<li>HugeGraph RocksDB &gt; Titan thrift+Cassandra &gt; HugeGraph Cassandra &gt; HugeGraph Memory</li>
</ul>
<h4 id="23-hugegraph-图常用分析方法性能">2.3 HugeGraph-图常用分析方法性能</h4>
<h5 id="术语说明">术语说明</h5>
<ul>
<li>FS(Find Shortest Path), 寻找最短路径</li>
<li>K-neighbor,从起始vertex出发,通过K跳边能够到达的所有顶点, 包括1, 2, 3&hellip;(K-1), K跳边可达vertex</li>
<li>K-out, 从起始vertex出发,恰好经过K跳out边能够到达的顶点</li>
</ul>
<h5 id="fs性能">FS性能</h5>
<table>
<thead>
<tr>
<th>Backend</th>
<th>email-enron(30w)</th>
<th>amazon0601(300w)</th>
<th>com-youtube.ungraph(300w)</th>
</tr>
</thead>
<tbody>
<tr>
<td>Titan</td>
<td>11.333</td>
<td>0.313</td>
<td>376.06</td>
</tr>
<tr>
<td>RocksDB</td>
<td>44.391</td>
<td>2.221</td>
<td>268.792</td>
</tr>
<tr>
<td>Cassandra</td>
<td>39.845</td>
<td>3.337</td>
<td>331.113</td>
</tr>
<tr>
<td>Memory</td>
<td>35.638</td>
<td>2.059</td>
<td>388.987</td>
</tr>
</tbody>
</table>
<p><em>说明</em></p>
<ul>
<li>表头&rdquo;()&ldquo;中数据是数据规模,以边为单位</li>
<li>表中数据是找到<strong>从第一个顶点出发到达随机选择的100个顶点的最短路径</strong>的时间,单位是s</li>
<li>例如,HugeGraph使用RocksDB查找第一个顶点到100个随机顶点的最短路径,总共耗时2.059s</li>
</ul>
<h6 id="结论-2">结论</h6>
<ul>
<li>在数据规模小或者顶点关联关系少的场景下,Titan最短路径性能优于HugeGraph</li>
<li>随着数据规模增大且顶点的关联度增高,HugeGraph最短路径性能优于Titan</li>
</ul>
<h5 id="k-neighbor性能">K-neighbor性能</h5>
<table>
<thead>
<tr>
<th>顶点</th>
<th>深度</th>
<th>一度</th>
<th>二度</th>
<th>三度</th>
<th>四度</th>
<th>五度</th>
<th>六度</th>
</tr>
</thead>
<tbody>
<tr>
<td>v1</td>
<td>时间</td>
<td>0.031s</td>
<td>0.033s</td>
<td>0.048s</td>
<td>0.500s</td>
<td>11.27s</td>
<td>OOM</td>
</tr>
<tr>
<td>v111</td>
<td>时间</td>
<td>0.027s</td>
<td>0.034s</td>
<td>0.115</td>
<td>1.36s</td>
<td>OOM</td>
<td>&ndash;</td>
</tr>
<tr>
<td>v1111</td>
<td>时间</td>
<td>0.039s</td>
<td>0.027s</td>
<td>0.052s</td>
<td>0.511s</td>
<td>10.96s</td>
<td>OOM</td>
</tr>
</tbody>
</table>
<p><em>说明</em></p>
<ul>
<li>HugeGraph-Server的JVM内存设置为32GB,数据量过大时会出现OOM</li>
</ul>
<h5 id="k-out性能">K-out性能</h5>
<table>
<thead>
<tr>
<th>顶点</th>
<th>深度</th>
<th>一度</th>
<th>二度</th>
<th>三度</th>
<th>四度</th>
<th>五度</th>
<th>六度</th>
</tr>
</thead>
<tbody>
<tr>
<td>v1</td>
<td>时间</td>
<td>0.054s</td>
<td>0.057s</td>
<td>0.109s</td>
<td>0.526s</td>
<td>3.77s</td>
<td>OOM</td>
</tr>
<tr>
<td></td>
<td>10</td>
<td>133</td>
<td>2453</td>
<td>50,830</td>
<td>1,128,688</td>
<td></td>
<td></td>
</tr>
<tr>
<td>v111</td>
<td>时间</td>
<td>0.032s</td>
<td>0.042s</td>
<td>0.136s</td>
<td>1.25s</td>
<td>20.62s</td>
<td>OOM</td>
</tr>
<tr>
<td></td>
<td>10</td>
<td>211</td>
<td>4944</td>
<td>113150</td>
<td>2,629,970</td>
<td></td>
<td></td>
</tr>
<tr>
<td>v1111</td>
<td>时间</td>
<td>0.039s</td>
<td>0.045s</td>
<td>0.053s</td>
<td>1.10s</td>
<td>2.92s</td>
<td>OOM</td>
</tr>
<tr>
<td></td>
<td>10</td>
<td>140</td>
<td>2555</td>
<td>50825</td>
<td>1,070,230</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p><em>说明</em></p>
<ul>
<li>HugeGraph-Server的JVM内存设置为32GB,数据量过大时会出现OOM</li>
</ul>
<h6 id="结论-3">结论</h6>
<ul>
<li>FS场景,HugeGraph性能优于Titan</li>
<li>K-neighbor和K-out场景,HugeGraph能够实现在5度范围内秒级返回结果</li>
</ul>
<h4 id="24-图综合性能测试-cw">2.4 图综合性能测试-CW</h4>
<table>
<thead>
<tr>
<th>数据库</th>
<th>规模1000</th>
<th>规模5000</th>
<th>规模10000</th>
<th>规模20000</th>
</tr>
</thead>
<tbody>
<tr>
<td>Titan</td>
<td>45.943</td>
<td>849.168</td>
<td>2737.117</td>
<td>9791.46</td>
</tr>
<tr>
<td>Memory(core)</td>
<td>41.077</td>
<td>1825.905</td>
<td>*</td>
<td>*</td>
</tr>
<tr>
<td>Cassandra(core)</td>
<td>39.783</td>
<td>862.744</td>
<td>2423.136</td>
<td>6564.191</td>
</tr>
<tr>
<td>RcoksDB(core)</td>
<td>33.383</td>
<td>199.894</td>
<td>763.869</td>
<td>1677.813</td>
</tr>
</tbody>
</table>
<p><em>说明</em></p>
<ul>
<li>&ldquo;规模&quot;以顶点为单位</li>
<li>表中数据是社区发现完成需要的时间,单位是s,例如HugeGraph使用RocksDB后端在规模10000的数据集,社区聚合不再变化,需要耗时763.869s</li>
<li>&ldquo;*&ldquo;表示超过10000s未完成</li>
<li>CW测试是CRUD的综合评估</li>
<li>后三者分别是HugeGraph的不同后端,该测试中HugeGraph跟Titan一样,没有通过client,直接对core操作</li>
</ul>
<h5 id="结论-4">结论</h5>
<ul>
<li>HugeGraph在使用Cassandra后端时,性能略优于Titan,随着数据规模的增大,优势越来越明显,数据规模20000时,比Titan快30%</li>
<li>HugeGraph在使用RocksDB后端时,性能远高于Titan和HugeGraph的Cassandra后端,分别比两者快了6倍和4倍</li>
</ul>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-99a93ef9534d11fef4be3e4b3b1a6381">9 - Contribution Guidelines</h1>
</div>
<div class="td-content" style="">
<h1 id="pg-17ea1d6a1e6627d08a7d6f4d2898cca1">9.1 - How to Contribute to HugeGraph</h1>
<p>Thanks for taking the time to contribute! As an open source project, HugeGraph is looking forward to be contributed from everyone, and we are also grateful to all of the contributors.</p>
<p>The following is a contribution guide for HugeGraph:</p>
<img width="884" alt="image" src="https://user-images.githubusercontent.com/9625821/159643158-8bf72c0a-93c3-4a58-8912-7b2ab20ced1d.png">
<h2 id="1-preparation">1. Preparation</h2>
<p>We can contribute by reporting issues, submitting code patches or any other feedback.</p>
<p>Before submitting the code, we need to do some preparation:</p>
<ol>
<li>
<p>Sign up or login to GitHub: <a href="https://github.com">https://github.com</a></p>
</li>
<li>
<p>Fork HugeGraph repo from GitHub: <a href="https://github.com/hugegraph/hugegraph/fork">https://github.com/apache/incubator-hugegraph/fork</a></p>
</li>
<li>
<p>Clone code from fork repo to local: <a href="https://github.com/$%7BGITHUB_USER_NAME%7D/hugegraph">https://github.com/${GITHUB_USER_NAME}/hugegraph</a></p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># clone code from remote to local repo</span>
</span></span><span style="display:flex;"><span>git clone https://github.com/<span style="color:#4e9a06">${</span><span style="color:#000">GITHUB_USER_NAME</span><span style="color:#4e9a06">}</span>/hugegraph
</span></span></code></pre></div></li>
<li>
<p>Configure local HugeGraph repo</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#204a87">cd</span> hugegraph
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># add upstream to synchronize the latest code</span>
</span></span><span style="display:flex;"><span>git remote add hugegraph https://github.com/hugegraph/hugegraph
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># set name and email to push code to github</span>
</span></span><span style="display:flex;"><span>git config user.name <span style="color:#4e9a06">&#34;{full-name}&#34;</span> <span style="color:#8f5902;font-style:italic"># like &#34;Jermy Li&#34;</span>
</span></span><span style="display:flex;"><span>git config user.email <span style="color:#4e9a06">&#34;{email-address-of-github}&#34;</span> <span style="color:#8f5902;font-style:italic"># like &#34;jermy@apache.org&#34;</span>
</span></span></code></pre></div></li>
</ol>
<p>Optional: You can use <a href="https://desktop.github.com/">GitHub desktop</a> to greatly simplify the commit and update process.</p>
<h2 id="2-create-an-issue-on-github">2. Create an Issue on GitHub</h2>
<p>If you encounter bugs or have any questions, please go to <a href="https://github.com/apache/incubator-hugegraph/issues">GitHub Issues</a> to report them and feel free to <a href="https://github.com/hugegraph/hugegraph/issues/new">create an issue</a>.</p>
<h2 id="3-make-changes-of-code-locally">3. Make changes of code locally</h2>
<h4 id="31-create-a-new-branch">3.1 Create a new branch</h4>
<p>Please don&rsquo;t use master branch for development. Instead we should create a new branch:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># checkout master branch</span>
</span></span><span style="display:flex;"><span>git checkout master
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># pull the latest code from official hugegraph</span>
</span></span><span style="display:flex;"><span>git pull hugegraph
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># create new branch: bugfix-branch</span>
</span></span><span style="display:flex;"><span>git checkout -b bugfix-branch
</span></span></code></pre></div><h4 id="32-change-the-code">3.2 Change the code</h4>
<p>Assume that we need to modify some files like &ldquo;HugeGraph.java&rdquo; and &ldquo;HugeFactory.java&rdquo;:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># modify code to fix a bug</span>
</span></span><span style="display:flex;"><span>vim hugegraph-core/src/main/java/com/baidu/hugegraph/HugeGraph.java
</span></span><span style="display:flex;"><span>vim hugegraph-core/src/main/java/com/baidu/hugegraph/HugeFactory.java
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># run test locally (optional)</span>
</span></span><span style="display:flex;"><span>mvn <span style="color:#204a87">test</span> -Pcore-test,memory
</span></span></code></pre></div><p>Note: In order to be consistent with the code style easily, if you use <a href="https://www.jetbrains.com/idea/">IDEA</a> as your IDE, you can directly <a href="https://www.jetbrains.com/help/idea/configuring-code-style.html">import</a> our code style <a href="./hugegraph-style.xml">configuration file</a>.</p>
<h4 id="33-commit-changes-to-git-repo">3.3 Commit changes to git repo</h4>
<p>After the code has been completed, we submit them to the local git repo:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># add files to local git index</span>
</span></span><span style="display:flex;"><span>git add hugegraph-core/src/main/java/com/baidu/hugegraph/HugeGraph.java
</span></span><span style="display:flex;"><span>git add hugegraph-core/src/main/java/com/baidu/hugegraph/HugeFactory.java
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># commit to local git repo</span>
</span></span><span style="display:flex;"><span>git commit
</span></span></code></pre></div><p>Please edit the commit message after running <code>git commit</code>, we can explain what and how to fix a bug or implement a feature, the following is an example:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>Fix bug: run deploy multiple <span style="color:#204a87">times</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>fix <span style="color:#8f5902;font-style:italic">#ISSUE_ID</span>
</span></span></code></pre></div><blockquote>
<p>Please remember to fill in the issue id, which was generated by GitHub after issue creation.</p>
</blockquote>
<h4 id="34-push-commit-to-github-fork-repo">3.4 Push commit to GitHub fork repo</h4>
<p>Push the local commit to GitHub fork repo:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># push the local commit to fork repo</span>
</span></span><span style="display:flex;"><span>git push origin bugfix-branch:bugfix-branch
</span></span></code></pre></div><p>Note that since GitHub requires submitting code through <code>username + token</code> (instead of using <code>username + password</code> directly), you need to create a GitHub token from <a href="https://github.com/settings/tokens">https://github.com/settings/tokens</a>:
<img width="1280" alt="image" src="https://user-images.githubusercontent.com/9625821/163524204-7fe0e6bf-9c8b-4b1a-ac65-6a0ac423eb16.png"></p>
<h2 id="4-create-a-pull-request">4. Create a Pull Request</h2>
<p>Go to the web page of GitHub fork repo, there would be a chance to create a Pull Request after pushing to a new branch, just click button &ldquo;Compare &amp; pull request&rdquo; to do it. Then edit the description for proposed changes, which can just be copied from the commit message.</p>
<p>Please sign the HugeGraph CLA when contributing code for the first time. You can sign the CLA by just posting a Pull Request Comment same as the below format:</p>
<p><code>I have read the CLA Document and I hereby sign the CLA</code></p>
<p>Note: please make sure the email address you used to submit the code is bound to the GitHub account. For how to bind the email address, please refer to <a href="https://github.com/settings/emails">https://github.com/settings/emails</a>:
<img width="1280" alt="image" src="https://user-images.githubusercontent.com/9625821/163522445-2a50a72a-dea2-434f-9868-3a0d40d0d037.png"></p>
<h2 id="5-code-review">5. Code review</h2>
<p>Maintainers will start the code review after all the <strong>automatic</strong> checks are passed:</p>
<ul>
<li>Check: Contributor License Agreement is signed</li>
<li>Check: Travis CI builds is passed (automatically Test and Deploy)</li>
</ul>
<p>The commit will be accepted and merged if there is no problem after review.</p>
<p>Please click on &ldquo;Details&rdquo; to find the problem if any check does not pass.</p>
<p>If there are checks not passed or changes requested, then continue to modify the code and push again.</p>
<h2 id="6-further-changes-after-review">6. Further changes after review</h2>
<p>If we have not passed the review, don&rsquo;t be discouraged. Usually a commit needs to be reviewed several times before being accepted! Please follow the review comments and make further changes.</p>
<p>After the further changes, we submit them to the local repo:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># commit all updated files in a new commit,</span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># please feel free to enter any appropriate commit message, note that</span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># we will squash all commits in the pull request as one commit when</span>
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># merging into the master branch.</span>
</span></span><span style="display:flex;"><span>git commit -a
</span></span></code></pre></div><blockquote>
<p>If there are conflicts that prevent the code from being merged, we need to rebase on master branch:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># synchronize the latest code</span>
</span></span><span style="display:flex;"><span>git checkout master
</span></span><span style="display:flex;"><span>git pull hugegraph
</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># rebase on master</span>
</span></span><span style="display:flex;"><span>git checkout bugfix-branch
</span></span><span style="display:flex;"><span>git rebase -i master
</span></span></code></pre></div></blockquote>
<p>And push it to GitHub fork repo again:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># force push the local commit to fork repo</span>
</span></span><span style="display:flex;"><span>git push -f origin bugfix-branch:bugfix-branch
</span></span></code></pre></div><p>GitHub will automatically update the Pull Request after we push it, just wait for code review.</p>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-dc89ef117bed0b0ef3c6487f9a6a8bd0">9.2 - Subscribe Mailing Lists</h1>
<p>It is highly recommended to subscribe to the development mailing list to keep up-to-date with the community.</p>
<p>In the process of using HugeGraph, if you have any questions or ideas, suggestions, you can participate in the HugeGraph community building through the Apache mailing list. Sending a subscription email is also very simple, the steps are as follows:</p>
<ol>
<li>
<p>Send an email to <a href="mailto:dev-subscribe@hugegraph.apache.org">dev-subscribe@hugegraph.apache.org</a> with your own email address, subject and content are arbitrary.</p>
</li>
<li>
<p>Receive confirmation email and reply. After completing step 1, you will receive a confirmation email from <a href="mailto:dev-help@hugegraph.apache.org">dev-help@hugegraph.apache.org</a> (if not received, please confirm whether the email is automatically classified as spam, promotion email, subscription email, etc.) . Then reply directly to the email, or click on the link in the email to reply quickly, the subject and content are arbitrary.</p>
</li>
<li>
<p>Receive a welcome email. After completing the above steps, you will receive a welcome email with the subject WELCOME to <a href="mailto:dev@hugegraph.apache.org">dev@hugegraph.apache.org</a>, and you have successfully subscribed to the Apache HugeGraph mailing list.</p>
</li>
</ol>
<h1 id="unsubscribe-mailing-lists">Unsubscribe Mailing Lists</h1>
<p>If you do not need to know what&rsquo;s going on with HugeGraph, you can unsubscribe from the mailing list.</p>
<p>Unsubscribe from the mailing list steps are as follows:</p>
<ol>
<li>
<p>Send an email to <a href="mailto:dev-unsubscribe@hugegraph.apache.org">dev-unsubscribe@hugegraph.apache.org</a> with your subscribed email address, subject and content are arbitrary.</p>
</li>
<li>
<p>Receive confirmation email and reply. After completing step 1, you will receive a confirmation email from <a href="mailto:dev-help@hugegraph.apache.org">dev-help@hugegraph.apache.org</a> (if not received, please confirm whether the email is automatically classified as spam, promotion email, subscription email, etc.) . Then reply directly to the email, or click on the link in the email to reply quickly, the subject and content are arbitrary.</p>
</li>
<li>
<p>Receive a goodbye email. After completing the above steps, you will receive a goodbye email with the subject GOODBYE from <a href="mailto:dev@hugegraph.apache.org">dev@hugegraph.apache.org</a>, and you have successfully unsubscribed to the Apache HugeGraph mailing list, and you will not receive emails from <a href="mailto:dev@hugegraph.apache.org">dev@hugegraph.apache.org</a>.</p>
</li>
</ol>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-d9ec0777c4f7a8a41476a65f2ecca6f7">10 - CHANGELOGS</h1>
</div>
<div class="td-content" style="">
<h1 id="pg-6b37a0af49c5e6b45aeac03f2a71eab6">10.1 - HugeGraph 0.12 Release Notes</h1>
<h3 id="api--client">API &amp; Client</h3>
<h4 id="接口更新">接口更新</h4>
<ul>
<li>支持 https + auth 模式连接图服务 (hugegraph-client #109 #110)</li>
<li>统一 kout/kneighbor 等 OLTP 接口的参数命名及默认值(hugegraph-client #122 #123)</li>
<li>支持 RESTful 接口利用 P.textcontains() 进行属性全文检索(hugegraph #1312)</li>
<li>增加 graph_read_mode API 接口,以切换 OLTP、OLAP 读模式(hugegraph #1332)</li>
<li>支持 list/set 类型的聚合属性 aggregate property(hugegraph #1332)</li>
<li>权限接口增加 METRICS 资源类型(hugegraph #1355、hugegraph-client #114)</li>
<li>权限接口增加 SCHEMA 资源类型(hugegraph #1362、hugegraph-client #117)</li>
<li>增加手动 compact API 接口,支持 rocksdb/cassandra/hbase 后端(hugegraph #1378)</li>
<li>权限接口增加 login/logout API,支持颁发或回收 Token(hugegraph #1500、hugegraph-client #125)</li>
<li>权限接口增加 project API(hugegraph #1504、hugegraph-client #127)</li>
<li>增加 OLAP 回写接口,支持 cassandra/rocksdb 后端(hugegraph #1506、hugegraph-client #129)</li>
<li>增加返回一个图的所有 Schema 的 API 接口(hugegraph #1567、hugegraph-client #134)</li>
<li>变更 property key 创建与更新 API 的 HTTP 返回码为 202(hugegraph #1584)</li>
<li>增强 Text.contains() 支持3种格式:&ldquo;word&rdquo;、&quot;(word)&quot;、&quot;(word1|word2|word3)&quot;(hugegraph #1652)</li>
<li>统一了属性中特殊字符的行为(hugegraph #1670 #1684)</li>
<li>支持动态创建图实例、克隆图实例、删除图实例(hugegraph-client #135)</li>
</ul>
<h4 id="其它修改">其它修改</h4>
<ul>
<li>修复在恢复 index label 时 IndexLabelV56 id 丢失的问题(hugegraph-client #118)</li>
<li>为 Edge 类增加 name() 方法(hugegraph-client #121)</li>
</ul>
<h3 id="core--server">Core &amp; Server</h3>
<h4 id="功能更新">功能更新</h4>
<ul>
<li>支持动态创建图实例(hugegraph #1065)</li>
<li>支持通过 Gremlin 调用 OLTP 算法(hugegraph #1289)</li>
<li>支持多集群使用同一个图权限服务,以共享权限信息(hugegraph #1350)</li>
<li>支持跨多节点的 Cache 缓存同步(hugegraph #1357)</li>
<li>支持 OLTP 算法使用原生集合以降低 GC 压力提升性能(hugegraph #1409)</li>
<li>支持对新增的 Raft 节点打快照或恢复快照(hugegraph #1439)</li>
<li>支持对集合属性建立二级索引 Secondary Index(hugegraph #1474)</li>
<li>支持审计日志,及其压缩、限速等功能(hugegraph #1492 #1493)</li>
<li>支持 OLTP 算法使用高性能并行无锁原生集合以提升性能(hugegraph #1552)</li>
</ul>
<h4 id="bug修复">BUG修复</h4>
<ul>
<li>修复带权最短路径算法(weighted shortest path)NPE问题 (hugegraph #1250)</li>
<li>增加 Raft 相关的安全操作白名单(hugegraph #1257)</li>
<li>修复 RocksDB 实例未正确关闭的问题(hugegraph #1264)</li>
<li>在清空数据 truncate 操作之后,显示的发起写快照 Raft Snapshot(hugegraph #1275)</li>
<li>修复 Raft Leader 在收到 Follower 转发请求时未更新缓存的问题(hugegraph #1279)</li>
<li>修复带权最短路径算法(weighted shortest path)结果不稳定的问题(hugegraph #1280)</li>
<li>修复 rays 算法 limit 参数不生效问题(hugegraph #1284)</li>
<li>修复 neighborrank 算法 capacity 参数未检查的问题(hugegraph #1290)</li>
<li>修复 PostgreSQL 因为不存在与用户同名的数据库而初始化失败的问题(hugegraph #1293)</li>
<li>修复 HBase 后端当启用 Kerberos 时初始化失败的问题(hugegraph #1294)</li>
<li>修复 HBase/RocksDB 后端 shard 结束判断错误问题(hugegraph #1306)</li>
<li>修复带权最短路径算法(weighted shortest path)未检查目标顶点存在的问题(hugegraph #1307)</li>
<li>修复 personalrank/neighborrank 算法中非 String 类型 id 的问题(hugegraph #1310)</li>
<li>检查必须是 master 节点才允许调度 gremlin job(hugegraph #1314)</li>
<li>修复 g.V().hasLabel().limit(n) 因为索引覆盖导致的部分结果不准确问题(hugegraph #1316)</li>
<li>修复 jaccardsimilarity 算法当并集为空时报 NaN 错误的问题(hugegraph #1324)</li>
<li>修复 Raft Follower 节点操作 Schema 多节点之间数据不同步问题(hugegraph #1325)</li>
<li>修复因为 tx 未关闭导致的 TTL 不生效问题(hugegraph #1330)</li>
<li>修复 gremlin job 的执行结果大于 Cassandra 限制但小于任务限制时的异常处理(hugegraph #1334)</li>
<li>检查权限接口 auth-delete 和 role-get API 操作时图必须存在(hugegraph #1338)</li>
<li>修复异步任务结果中包含 path/tree 时系列化不正常的问题(hugegraph #1351)</li>
<li>修复初始化 admin 用户时的 NPE 问题(hugegraph #1360)</li>
<li>修复异步任务原子性操作问题,确保 update/get fields 及 re-schedule 的原子性(hugegraph #1361)</li>
<li>修复权限 NONE 资源类型的问题(hugegraph #1362)</li>
<li>修复启用权限后,truncate 操作报错 SecurityException 及管理员信息丢失问题(hugegraph #1365)</li>
<li>修复启用权限后,解析数据忽略了权限异常的问题(hugegraph #1380)</li>
<li>修复 AuthManager 在初始化时会尝试连接其它节点的问题(hugegraph #1381)</li>
<li>修复特定的 shard 信息导致 base64 解码错误的问题(hugegraph #1383)</li>
<li>修复启用权限后,使用 consistent-hash LB 在校验权限时,creator 为空的问题(hugegraph #1385)</li>
<li>改进权限中 VAR 资源不再依赖于 VERTEX 资源(hugegraph #1386)</li>
<li>规范启用权限后,Schema 操作仅依赖具体的资源(hugegraph #1387)</li>
<li>规范启用权限后,部分操作由依赖 STATUS 资源改为依赖 ANY 资源(hugegraph #1391)</li>
<li>规范启用权限后,禁止初始化管理员密码为空(hugegraph #1400)</li>
<li>检查创建用户时 username/password 不允许为空(hugegraph #1402)</li>
<li>修复更新 Label 时,PrimaryKey 或 SortKey 被设置为可空属性的问题(hugegraph #1406)</li>
<li>修复 ScyllaDB 丢失分页结果问题(hugegraph #1407)</li>
<li>修复带权最短路径算法(weighted shortest path)权重属性强制转换为 double 的问题(hugegraph #1432)</li>
<li>统一 OLTP 算法中的 degree 参数命名(hugegraph #1433)</li>
<li>修复 fusiformsimilarity 算法当 similars 为空的时候返回所有的顶点问题(hugegraph #1434)</li>
<li>改进 paths 算法,当起始点与目标点相同时应该返回空路径(hugegraph #1435)</li>
<li>修改 kout/kneighbor 的 limit 参数默认值 10 为 10000000(hugegraph #1436)</li>
<li>修复分页信息中的 &lsquo;+&rsquo; 被 URL 编码为空格的问题(hugegraph #1437)</li>
<li>改进边更新接口的错误提示信息(hugegraph #1443)</li>
<li>修复 kout 算法 degree 未在所有 label 范围生效的问题(hugegraph #1459)</li>
<li>改进 kneighbor/kout 算法,起始点不允许出现在结果集中(hugegraph #1459 #1463)</li>
<li>统一 kout/kneighbor 的 Get 和 Post 版本行为(hugegraph #1470)</li>
<li>改进创建边时顶点类型不匹配的错误提示信息(hugegraph #1477)</li>
<li>修复 Range Index 的残留索引问题(hugegraph #1498)</li>
<li>修复权限操作未失效缓存的问题(hugegraph #1528)</li>
<li>修复 sameneighbor 的 limit 参数默认值 10 为 10000000(hugegraph #1530)</li>
<li>修复 clear API 不应该所有后端都调用 create snapshot 的问题(hugegraph #1532)</li>
<li>修复当 loading 模式时创建 Index Label 阻塞问题(hugegraph #1548)</li>
<li>修复增加图到 project 或从 project 移除图的问题(hugegraph #1562)</li>
<li>改进权限操作的一些错误提示信息(hugegraph #1563)</li>
<li>支持浮点属性设置为 Infinity/NaN 的值(hugegraph #1578)</li>
<li>修复 Raft 启用 safe_read 时的 quorum read 问题(hugegraph #1618)</li>
<li>修复 token 过期时间配置的单位问题(hugegraph #1625)</li>
<li>修复 MySQL Statement 资源泄露问题(hugegraph #1627)</li>
<li>修复竞争条件下 Schema.getIndexLabel 获取不到数据的问题(hugegraph #1629)</li>
<li>修复 HugeVertex4Insert 无法系列化问题(hugegraph #1630)</li>
<li>修复 MySQL count Statement 未关闭问题(hugegraph #1640)</li>
<li>修复当删除 Index Label 异常时,导致状态不同步问题(hugegraph #1642)</li>
<li>修复 MySQL 执行 gremlin timeout 导致的 statement 未关闭问题(hugegraph #1643)</li>
<li>改进 Search Index 以兼容特殊 Unicode 字符:\u0000 to \u0003(hugegraph #1659)</li>
<li>修复 #1659 引入的 Char 未转化为 String 的问题(hugegraph #1664)</li>
<li>修复 has() + within() 查询时结果异常问题(hugegraph #1680)</li>
<li>升级 Log4j 版本到 2.17 以修复安全漏洞(hugegraph #1686 #1698 #1702)</li>
<li>修复 HBase 后端 shard scan 中 startkey 包含空串时 NPE 问题(hugegraph #1691)</li>
<li>修复 paths 算法在深层环路遍历时性能下降问题 (hugegraph #1694)</li>
<li>改进 personalrank 算法的参数默认值及错误检查(hugegraph #1695)</li>
<li>修复 RESTful 接口 P.within 条件不生效问题(hugegraph #1704)</li>
<li>修复启用权限时无法动态创建图的问题(hugegraph #1708)</li>
</ul>
<h4 id="配置项修改">配置项修改:</h4>
<ul>
<li>共享 SSL 相关配置项命名(hugegraph #1260)</li>
<li>支持 RocksDB 配置项 rocksdb.level_compaction_dynamic_level_bytes(hugegraph #1262)</li>
<li>去除 RESFful Server 服务协议配置项 restserver.protocol,自动提取 URL 中的 Schema(hugegraph #1272)</li>
<li>增加 PostgreSQL 配置项 jdbc.postgresql.connect_database(hugegraph #1293)</li>
<li>增加针对顶点主键是否编码的配置项 vertex.encode_primary_key_number(hugegraph #1323)</li>
<li>增加针对聚合查询是否启用索引优化的配置项 query.optimize_aggregate_by_index(hugegraph #1549)</li>
<li>修改 cache_type 的默认值 l1 为 l2(hugegraph #1681)</li>
<li>增加 JDBC 强制重连配置项 jdbc.forced_auto_reconnect(hugegraph #1710)</li>
</ul>
<h4 id="其它修改-1">其它修改</h4>
<ul>
<li>增加默认的 SSL Certificate 文件(hugegraph #1254)</li>
<li>OLTP 并行请求共享线程池,而非每个请求使用单独的线程池(hugegraph #1258)</li>
<li>修复 Example 的问题(hugegraph #1308)</li>
<li>使用 jraft 版本 1.3.5(hugegraph #1313)</li>
<li>如果启用了 Raft 模式时,关闭 RocksDB 的 WAL(hugegraph #1318)</li>
<li>使用 TarLz4Util 来提升快照 Snapshot 压缩的性能(hugegraph #1336)</li>
<li>升级存储的版本号(store version),因为 property key 增加了 read frequency(hugegraph #1341)</li>
<li>顶点/边 vertex/edge 的 Get API 使用 queryVertex/queryEdge 方法来替代 iterator 方法(hugegraph #1345)</li>
<li>支持 BFS 优化的多度查询(hugegraph #1359)</li>
<li>改进 RocksDB deleteRange() 带来的查询性能问题(hugegraph #1375)</li>
<li>修复 travis-ci cannot find symbol Namifiable 问题(hugegraph #1376)</li>
<li>确保 RocksDB 快照的磁盘与 data path 指定的一致(hugegraph #1392)</li>
<li>修复 MacOS 空闲内存 free_memory 计算不准确问题(hugegraph #1396)</li>
<li>增加 Raft onBusy 回调来配合限速(hugegraph #1401)</li>
<li>升级 netty-all 版本 4.1.13.Final 到 4.1.42.Final(hugegraph #1403)</li>
<li>支持 TaskScheduler 暂停当设置为 loading 模式时(hugegraph #1414)</li>
<li>修复 raft-tools 脚本的问题(hugegraph #1416)</li>
<li>修复 license params 问题(hugegraph #1420)</li>
<li>提升写权限日志的性能,通过 batch flush &amp; async write 方式改进(hugegraph #1448)</li>
<li>增加 MySQL 连接 URL 的日志记录(hugegraph #1451)</li>
<li>提升用户信息校验性能(hugegraph# 1460)</li>
<li>修复 TTL 因为起始时间问题导致的错误(hugegraph #1478)</li>
<li>支持日志配置的热加载及对审计日志的压缩(hugegraph #1492)</li>
<li>支持针对用户级别的审计日志的限速(hugegraph #1493)</li>
<li>缓存 RamCache 支持用户自定义的过期时间(hugegraph #1494)</li>
<li>在 auth client 端缓存 login role 以避免重复的 RPC 调用(hugegraph #1507)</li>
<li>修复 IdSet.contains() 未复写 AbstractCollection.contains() 问题(hugegraph #1511)</li>
<li>修复当 commitPartOfEdgeDeletions() 失败时,未回滚 rollback 的问题(hugegraph #1513)</li>
<li>提升 Cache metrics 性能(hugegraph #1515)</li>
<li>当发生 license 操作错误时,增加打印异常日志(hugegraph #1522)</li>
<li>改进 SimilarsMap 实现(hugegraph #1523)</li>
<li>使用 tokenless 方式来更新 coverage(hugegraph #1529)</li>
<li>改进 project update 接口的代码(hugegraph #1537)</li>
<li>允许从 option() 访问 GRAPH_STORE(hugegraph #1546)</li>
<li>优化 kout/kneighbor 的 count 查询以避免拷贝集合(hugegraph #1550)</li>
<li>优化 shortestpath 遍历方式,以数据量少的一端优先遍历(hugegraph #1569)</li>
<li>完善 rocksdb.data_disks 配置项的 allowed keys 提示信息(hugegraph #1585)</li>
<li>为 number id 优化 OLTP 遍历中的 id2code 方法性能(hugegraph #1623)</li>
<li>优化 HugeElement.getProperties() 返回 Collection&lt;Property&gt;(hugegraph #1624)</li>
<li>增加 APACHE PROPOSAL 文件(hugegraph #1644)</li>
<li>改进 close tx 的流程(hugegraph #1655)</li>
<li>当 reset() 时为 MySQL close 捕获所有类型异常(hugegraph #1661)</li>
<li>改进 OLAP property 模块代码(hugegraph #1675)</li>
<li>改进查询模块的执行性能(hugegraph #1711)</li>
</ul>
<h3 id="loader">Loader</h3>
<ul>
<li>支持导入 Parquet 格式文件(hugegraph-loader #174)</li>
<li>支持 HDFS Kerberos 权限验证(hugegraph-loader #176)</li>
<li>支持 HTTPS 协议连接到服务端导入数据(hugegraph-loader #183)</li>
<li>修复 trust store file 路径问题(hugegraph-loader #186)</li>
<li>处理 loading mode 重置的异常(hugegraph-loader #187)</li>
<li>增加在插入数据时对非空属性的检查(hugegraph-loader #190)</li>
<li>修复客户端与服务端时区不同导致的时间判断问题(hugegraph-loader #192)</li>
<li>优化数据解析性能(hugegraph-loader #194)</li>
<li>当用户指定了文件头时,检查其必须不为空(hugegraph-loader #195)</li>
<li>修复示例程序中 MySQL struct.json 格式问题(hugegraph-loader #198)</li>
<li>修复顶点边导入速度不精确的问题(hugegraph-loader #200 #205)</li>
<li>当导入启用 check-vertex 时,确保先导入顶点再导入边(hugegraph-loader #206)</li>
<li>修复边 Json 数据导入格式不统一时数组溢出的问题(hugegraph-loader #211)</li>
<li>修复因边 mapping 文件不存在导致的 NPE 问题(hugegraph-loader #213)</li>
<li>修复读取时间可能出现负数的问题(hugegraph-loader #215)</li>
<li>改进目录文件的日志打印(hugegraph-loader #223)</li>
<li>改进 loader 的的 Schema 处理流程(hugegraph-loader #230)</li>
</ul>
<h3 id="tools">Tools</h3>
<ul>
<li>支持 HTTPS 协议(hugegraph-tools #71)</li>
<li>移除 &ndash;protocol 参数,直接从URL中自动提取(hugegraph-tools #72)</li>
<li>支持将数据 dump 到 HDFS 文件系统(hugegraph-tools #73)</li>
<li>修复 trust store file 路径问题(hugegraph-tools #75)</li>
<li>支持权限信息的备份恢复(hugegraph-tools #76)</li>
<li>支持无参数的 Printer 打印(hugegraph-tools #79)</li>
<li>修复 MacOS free_memory 计算问题(hugegraph-tools #82)</li>
<li>支持备份恢复时指定线程数hugegraph-tools #83)</li>
<li>支持动态创建图、克隆图、删除图等命令(hugegraph-tools #95)</li>
</ul>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-dad363871d9408c4438794858aa44f57">11 - </h1>
<p>HugeDoc Installation</p>
<p>HugeDoc use <a href="https://github.com/GitbookIO/gitbook">GitBook</a> to convert markdown to static website,
and use GitBook with NodeJs to server as web server.</p>
<h3 id="how-to-use">How To use</h3>
<p>Install GitBook is via <strong>NPM</strong>:</p>
<pre tabindex="0"><code>$ npm install gitbook-cli -g
</code></pre><p>Preview and serve your book using:</p>
<pre tabindex="0"><code>$ gitbook serve
</code></pre><p>Or build the static website using:</p>
<pre tabindex="0"><code>$ gitbook build
</code></pre>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-01c617939d9e21dc19567e8753d6fd3b">12 - </h1>
<h2 id="contributor-agreement">Contributor Agreement</h2>
<h2 id="individual-contributor-exclusive-license-agreement">Individual Contributor exclusive License Agreement</h2>
<h2 id="including-the-traditional-patent-license-option">(including the TRADITIONAL PATENT LICENSE OPTION)</h2>
<p>Thank you for your interest in contributing to HugeGraph&rsquo;s all projects (&ldquo;We&rdquo; or &ldquo;Us&rdquo;).</p>
<p>The purpose of this contributor agreement (&ldquo;Agreement&rdquo;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the comment of GitHub CLA-Assistant when submitting a new pull request.</p>
<h3 id="how-to-use-this-contributor-agreement">How to use this Contributor Agreement</h3>
<p>If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement or sign the Entity version of this document. If You do not own the Copyright in the entire work of authorship, any other author of the Contribution should also sign this – in any event, please contact Us at <a href="mailto:hugegraph@googlegroups.com">hugegraph@googlegroups.com</a></p>
<h3 id="1-definitions">1. Definitions</h3>
<p><strong>&ldquo;You&rdquo;</strong> means the individual Copyright owner who Submits a Contribution to Us.</p>
<p><strong>&ldquo;Contribution&rdquo;</strong> means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted by You to Us, in which You own the Copyright.</p>
<p><strong>&ldquo;Copyright&rdquo;</strong> means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.</p>
<p><strong>&ldquo;Material&rdquo;</strong> means the software or documentation made available by Us to third parties. When this Agreement covers more than one software project, the Material means the software or documentation to which the Contribution was Submitted. After You Submit the Contribution, it may be included in the Material.</p>
<p><strong>&ldquo;Submit&rdquo;</strong> means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, Us, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &ldquo;Not a Contribution.&rdquo;</p>
<p><strong>&ldquo;Documentation&rdquo;</strong> means any non-software portion of a Contribution.</p>
<h3 id="2-license-grant">2. License grant</h3>
<h4 id="21-copyright-license-to-us">2.1 Copyright license to Us</h4>
<p>Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, Exclusive, perpetual and irrevocable (except as stated in Section 8.2) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:</p>
<ul>
<li>publish the Contribution,</li>
<li>modify the Contribution,</li>
<li>prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,</li>
<li>reproduce the Contribution in original or modified form,</li>
<li>distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.</li>
</ul>
<h4 id="22-moral-rights">2.2 Moral rights</h4>
<p>Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.</p>
<h4 id="23-copyright-license-back-to-you">2.3 Copyright license back to You</h4>
<p>Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:</p>
<ul>
<li>publish the Contribution,</li>
<li>modify the Contribution,</li>
<li>prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,</li>
<li>reproduce the Contribution in original or modified form,</li>
<li>distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.</li>
</ul>
<p>This license back is limited to the Contribution and does not provide any rights to the Material.</p>
<h3 id="3-patents">3. Patents</h3>
<h4 id="31-patent-license">3.1 Patent license</h4>
<p>Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Section 3.2) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.</p>
<h4 id="32-revocation-of-patent-license">3.2 Revocation of patent license</h4>
<p>You reserve the right to revoke the patent license stated in section 3.1 if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &ldquo;Defensive Purpose&rdquo; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.</p>
<h3 id="4-license-obligations-by-us">4. License obligations by Us</h3>
<p>We agree to (sub)license the Contribution or any Materials containing, based on or derived from your Contribution under the terms of any licenses the Free Software Foundation classifies as Free Software License and which are approved by the Open Source Initiative as Open Source licenses.</p>
<p>More specifically and in strict accordance with the above paragraph, we agree to (sub)license the Contribution or any Materials containing, based on or derived from the Contribution only in accordance with our licensing policy available at: <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.</p>
<p>In addition, We may use the following licenses for Documentation in the Contribution: GFDL-1.2 (including any right to adopt any future version of a license).</p>
<p>We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of any licenses the Free Software Foundation classifies as Free Software licenses and which are approved by the Open Source Initiative as Open Source licenses..</p>
<h3 id="5-disclaimer">5. Disclaimer</h3>
<p>THE CONTRIBUTION IS PROVIDED &ldquo;AS IS&rdquo;. MORE PARTICULARLY, ALL EXPRESS OR IMPLIED WARRANTIES INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTY OF SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE EXPRESSLY DISCLAIMED BY YOU TO US AND BY US TO YOU. TO THE EXTENT THAT ANY SUCH WARRANTIES CANNOT BE DISCLAIMED, SUCH WARRANTY IS LIMITED IN DURATION AND EXTENT TO THE MINIMUM PERIOD AND EXTENT PERMITTED BY LAW.</p>
<h3 id="6-consequential-damage-waiver">6. Consequential damage waiver</h3>
<p>TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL YOU OR WE BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF ANTICIPATED SAVINGS, LOSS OF DATA, INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL AND EXEMPLARY DAMAGES ARISING OUT OF THIS AGREEMENT REGARDLESS OF THE LEGAL OR EQUITABLE THEORY (CONTRACT, TORT OR OTHERWISE) UPON WHICH THE CLAIM IS BASED.</p>
<h3 id="7-approximation-of-disclaimer-and-damage-waiver">7. Approximation of disclaimer and damage waiver</h3>
<p>IF THE DISCLAIMER AND DAMAGE WAIVER MENTIONED IN SECTION 5. AND SECTION 6. CANNOT BE GIVEN LEGAL EFFECT UNDER APPLICABLE LOCAL LAW, REVIEWING COURTS SHALL APPLY LOCAL LAW THAT MOST CLOSELY APPROXIMATES AN ABSOLUTE WAIVER OF ALL CIVIL OR CONTRACTUAL LIABILITY IN CONNECTION WITH THE CONTRIBUTION.</p>
<h3 id="8-term">8. Term</h3>
<p>8.1 This Agreement shall come into effect upon Your acceptance of the terms and conditions.</p>
<p>8.2 This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section 4. Such termination must be made in writing.</p>
<p>8.3 In the event of a termination of this Agreement Sections 5, 6, 7, 8 and 9 shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.</p>
<h3 id="9-miscellaneous">9 Miscellaneous</h3>
<p>9.1 This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of China excluding its private international law provisions.</p>
<p>9.2 This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.</p>
<p>9.3 In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.</p>
<p>9.4 If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.</p>
<p>9.5 You agree to notify Us of any facts or circumstances of which you become aware that would make this Agreement inaccurate in any respect.</p>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-a395eab4dc054c73b0174216cfbeaf1a">13 - </h1>
<h1 id="hugegraph-docs">HugeGraph Docs</h1>
<ul>
<li><a href="download.md">Download</a></li>
</ul>
<h2 id="quickstart">Quickstart</h2>
<ul>
<li><a href="quickstart/hugegraph-server.md">Install HugeGraph-Server</a></li>
<li><a href="quickstart/hugegraph-loader.md">Load data with HugeGraph-Loader</a></li>
<li><a href="quickstart/hugegraph-tools.md">Manage with HugeGraph-Tools</a></li>
<li><a href="quickstart/hugegraph-hubble.md">Visual with HugeGraph-Hubble</a></li>
<li><a href="quickstart/hugegraph-studio.md">Display with HugeGraph-Studio</a></li>
<li><a href="quickstart/hugegraph-client.md">Develop with HugeGraph-Client</a></li>
<li><a href="quickstart/hugegraph-spark.md">Analysis with HugeGraph-Spark</a></li>
</ul>
<h2 id="config">Config</h2>
<ul>
<li><a href="config/config-guide.md">Config Guide</a></li>
<li><a href="config/config-option.md">Config Options</a></li>
<li><a href="config/config-authentication.md">Config Authentication</a></li>
<li><a href="config/config-https.md">Config HTTPS</a></li>
</ul>
<h2 id="api">API</h2>
<ul>
<li><a href="clients/hugegraph-api.md">RESTful API</a>
<ul>
<li><a href="clients/restful-api/schema.md">Schema</a></li>
<li><a href="clients/restful-api/propertykey.md">PropertyKey</a></li>
<li><a href="clients/restful-api/vertexlabel.md">VertexLabel</a></li>
<li><a href="clients/restful-api/edgelabel.md">EdgeLabel</a></li>
<li><a href="clients/restful-api/indexlabel.md">IndexLabel</a></li>
<li><a href="clients/restful-api/rebuild.md">Rebuild</a></li>
<li><a href="clients/restful-api/vertex.md">Vertex</a></li>
<li><a href="clients/restful-api/edge.md">Edge</a></li>
<li><a href="clients/restful-api/traverser.md">Traverser</a></li>
<li><a href="clients/restful-api/rank.md">Rank</a></li>
<li><a href="clients/restful-api/variable.md">Variable</a></li>
<li><a href="clients/restful-api/graphs.md">Graphs</a></li>
<li><a href="clients/restful-api/task.md">Task</a></li>
<li><a href="clients/restful-api/gremlin.md">Gremlin</a></li>
<li><a href="clients/restful-api/auth.md">Authentication</a></li>
<li><a href="clients/restful-api/other.md">Other</a></li>
</ul>
</li>
<li><a href="clients/hugegraph-client.md">Java Client</a></li>
<li><a href="clients/gremlin-console.md">Gremlin Console</a></li>
</ul>
<h2 id="guides">Guides</h2>
<ul>
<li><a href="guides/architectural.md">Architecture Overview</a></li>
<li><a href="guides/desgin-concept.md">Design Concepts</a></li>
<li><a href="guides/custom-plugin.md">Custom Plugins</a></li>
<li><a href="guides/backup-restore.md">Backup Restore</a></li>
<li><a href="guides/faq.md">FAQ</a></li>
</ul>
<h2 id="query-language">Query Language</h2>
<ul>
<li><a href="language/hugegraph-gremlin.md">Gremlin Query Language</a></li>
<li><a href="language/hugegraph-example.md">HugeGraph Examples</a></li>
</ul>
<h2 id="performance">Performance</h2>
<ul>
<li><a href="performance/hugegraph-benchmark-0.5.6.md">HugeGraph Benchmark Performance</a></li>
<li><a href="content/cn/docs/performance/api-preformance/_index.md">HugeGraph API Performance</a>
<ul>
<li><a href="content/cn/docs/performance/api-preformance/hugegraph-api-0.5.6-RocksDB.md">v0.5.6 Stand-alone(RocksDB)</a></li>
<li><a href="content/cn/docs/performance/api-preformance/hugegraph-api-0.5.6-Cassandra.md">v0.5.6 Cluster(Cassandra)</a></li>
<li><a href="content/cn/docs/performance/api-preformance/hugegraph-api-0.4.4.md">v0.4.4</a></li>
<li><a href="content/cn/docs/performance/api-preformance/hugegraph-api-0.2.md">v0.2</a></li>
</ul>
</li>
<li><a href="performance/hugegraph-loader-performance.md">HugeGraph-Loader Performance</a></li>
</ul>
<h2 id="changelogs">ChangeLogs</h2>
<ul>
<li><a href="changelog/hugegraph-0.12.0-release-notes.md">Release-0.12.0</a></li>
<li><a href="changelog/hugegraph-0.11.2-release-notes.md">Release-0.11.2</a></li>
<li><a href="changelog/hugegraph-0.10.4-release-notes.md">Release-0.10.4</a></li>
<li><a href="changelog/hugegraph-0.9.2-release-notes.md">Release-0.9.2</a></li>
<li><a href="changelog/hugegraph-0.8.0-release-notes.md">Release-0.8.0</a></li>
<li><a href="changelog/hugegraph-0.7.4-release-notes.md">Release-0.7.4</a></li>
<li><a href="changelog/hugegraph-0.6.1-release-notes.md">Release-0.6.1</a></li>
<li><a href="changelog/hugegraph-0.5.6-release-notes.md">Release-0.5.6</a></li>
<li><a href="changelog/hugegraph-0.4.4-release-notes.md">Release-0.4.4</a></li>
<li><a href="changelog/hugegraph-0.3.3-release-notes.md">Release-0.3.3</a></li>
<li><a href="changelog/hugegraph-0.2.4-release-notes.md">Release-0.2.4</a></li>
<li><a href="changelog/hugegraph-0.2-release-notes.md">Release-0.2</a></li>
</ul>
</div>
</main>
</div>
</div>
<footer class="bg-dark py-3 row d-print-none">
<div class="footer-container">
<div class="row">
<div class="col-1"></div>
<div class="col-4 text-center container-center">
<div class="footer-row">
<a href="https://www.apache.org">
<div class="footer-apache-logo">
<svg id="Layer_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 7127.6 2890" enable-background="new 0 0 7127.6 2890"><path fill="#6d6e71" d="M7104.7 847.8c15.3 15.3 22.9 33.7 22.9 55.2s-7.6 39.9-22.9 55.4c-15.3 15.4-33.8 23.1-55.6 23.1s-40.2-7.6-55.4-22.9c-15.1-15.3-22.7-33.7-22.7-55.2s7.6-39.9 22.9-55.4c15.3-15.4 33.7-23.1 55.4-23.1C7070.9 824.9 7089.4 832.5 7104.7 847.8zM7098.1 951.9c13.3-13.6 20-29.8 20-48.7s-6.6-35-19.8-48.5c-13.2-13.4-29.4-20.1-48.6-20.1-19.2.0-35.4 6.7-48.7 20.2s-19.9 29.7-19.9 48.7 6.6 35.2 19.7 48.6c13.1 13.4 29.3 20.1 48.5 20.1S7084.7 965.4 7098.1 951.9zm-11-63.8c0 14-6.1 22.8-18.4 26.4l22.5 30.5H7073l-20.3-28.3h-18.6V945h-14.7v-84.6h31.8c12.8.0 22 2.2 27.6 6.6C7084.4 871.4 7087.1 878.4 7087.1 888.1zM7068.2 9e2c3-2.4 4.4-6.5 4.4-12s-1.5-9.4-4.5-11.6-8.4-3.2-16-3.2h-18v30.5h17.5C7059.7 903.6 7065.3 902.4 7068.2 9e2z"/><path fill="#6d6e71" d="M1803.6 499.8v155.4h-20V499.8h-56.8v-19.2h133.9v19.2H1803.6z"/><path fill="#6d6e71" d="M2082.2 655.2v-76.9H1977v76.9h-20V480.5h20v78.9h105.2v-78.9h20v174.7h-20z"/><path fill="#6d6e71" d="M2241.4 499.8v57.4h88.1v19.2h-88.1v59.8h101.8v19h-121.8V480.5H2340v19.2H2241.4z"/><path fill="#d22128" d="M1574.5 1852.4l417.3-997.6h80.1l417.3 997.6h-105.4l-129.3-311.9h-448.2l-127.9 311.9H1574.5zM2032.6 970l-205.1 493.2h404.7L2032.6 970z"/><path fill="#d22128" d="M2596.9 1852.4V854.8H3010c171.4.0 295.1 158.8 295.1 313.3.0 163-115.2 316.1-286.6 316.1h-324.6v368.1h-97zm97-455.3h318.9c118 0 193.9-108.2 193.9-229 0-125.1-92.7-226.2-202.3-226.2h-310.5v455.2z"/><path fill="#d22128" d="M3250.5 1852.4l417.3-997.6h80.1l417.3 997.6h-105.4l-129.3-311.9h-448.2l-127.9 311.9H3250.5zM3708.6 970l-205.1 493.2h404.7L3708.6 970z"/><path fill="#d22128" d="M4637.3 849.1c177 0 306.3 89.9 368.1 217.8l-78.7 47.8c-63.2-132.1-186.9-177-295.1-177-238.9.0-369.5 213.6-369.5 414.5.0 220.6 161.6 420.1 373.7 420.1 112.4.0 244.5-56.2 307.7-185.5l81.5 42.1c-64.6 148.9-241.7 231.8-394.8 231.8-274 0-466.5-261.3-466.5-514.2C4163.8 1106.3 4336.6 849.1 4637.3 849.1z"/><path fill="#d22128" d="M5949.1 854.8v997.6h-98.4v-466.5h-591.5v466.5h-96.9V854.8h96.9v444h591.5v-444H5949.1z"/><path fill="#d22128" d="M6844.6 1765.2v87.1h-670.2V854.8H6832v87.1h-560.6v359.7h489v82.9h-489v380.8H6844.6z"/><path fill="#6d6e71" d="M1667.6 2063.6c11.8 3.5 22.2 8.3 31 14.2l-10.3 22.6c-9-6-18.6-10.4-28.9-13.4-10.2-2.9-20-4.4-29.2-4.4-13.6.0-24.5 2.4-32.6 7.3s-12.2 11.8-12.2 20.7c0 7.6 2.3 14 6.8 19s10.2 8.9 17 11.7c6.8 2.8 16.1 6 28 9.6 14.4 4.6 26 8.9 34.7 12.9 8.8 4 16.3 9.9 22.5 17.8 6.2 7.8 9.3 18.2 9.3 31 0 11.7-3.2 21.8-9.5 30.6-6.3 8.7-15.3 15.5-26.8 20.3-11.6 4.8-24.9 7.2-40 7.2s-29.7-2.9-43.9-8.7c-14.2-5.8-26.4-13.6-36.6-23.4l10.7-21.6c9.6 9.4 20.7 16.7 33.3 21.9 12.6 5.2 24.8 7.8 36.8 7.8 15.3.0 27.3-3 36.1-8.9s13.2-13.9 13.2-23.9c0-7.8-2.3-14.3-6.9-19.4-4.6-5.1-10.3-9-17.1-11.9-6.8-2.8-16.1-6-28-9.6-14.2-4.2-25.7-8.3-34.6-12.2-8.9-3.9-16.4-9.7-22.5-17.5-6.1-7.7-9.2-17.9-9.2-30.6.0-10.9 3-20.4 9-28.6s14.6-14.6 25.6-19.1c11.1-4.5 23.8-6.8 38.2-6.8C1643.8 2058.3 1655.7 2060.1 1667.6 2063.6z"/><path fill="#6d6e71" d="M1980.1 2072.8c16.8 9.4 30.2 22.3 40 38.4 9.8 16.2 14.8 33.9 14.8 53.3.0 19.5-4.9 37.4-14.8 53.6-9.8 16.3-23.2 29.1-40 38.6s-35.3 14.3-55.2 14.3c-20.3.0-38.8-4.7-55.7-14.3-16.8-9.5-30.2-22.4-40-38.6-9.8-16.3-14.8-34.1-14.8-53.6s4.9-37.3 14.8-53.5c9.8-16.2 23.2-29 40-38.3 16.8-9.4 35.4-14 55.7-14C1944.8 2058.6 1963.2 2063.3 1980.1 2072.8zM1881.9 2092.7c-13.1 7.4-23.6 17.5-31.4 30.1-7.8 12.6-11.8 26.5-11.8 41.7.0 15.3 3.9 29.3 11.8 42 7.8 12.7 18.3 22.8 31.4 30.2 13.1 7.4 27.4 11.1 42.9 11.1s29.7-3.7 42.7-11.1 23.3-17.4 31.1-30.2c7.7-12.7 11.6-26.7 11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30s-27.2-11.2-42.6-11.2C1909.4 2081.5 1895.1 2085.2 1881.9 2092.7z"/><path fill="#6d6e71" d="M2186.5 2082.4v74h98.4v23.2h-98.4v90.2h-24.1v-210.6h133.8v23.2H2186.5z"/><path fill="#6d6e71" d="M2491.6 2082.4v187.4h-24.1v-187.4h-68.4v-23.2h161.4v23.2H2491.6z"/><path fill="#6d6e71" d="M2871.8 2269.8l-56.8-177.4-57.6 177.4h-24.5l-70.5-210.6h25.9l57.9 182.7 57.1-182.4 24.1-.3 57.7 182.7 57.1-182.7h25l-70.6 210.6H2871.8z"/><path fill="#6d6e71" d="M3087.3 2216.6l-23.5 53.2h-25.6l94.4-210.6h25l94.1 210.6h-26.1l-23.5-53.2H3087.3zM3144.5 2086.6l-46.9 106.8h94.4l-47.5-106.8z"/><path fill="#6d6e71" d="M3461.1 2202.7c-6 .4-10.7.6-14.1.6h-56v66.5h-24v-210.6h80c26.2.0 46.6 6.2 61.2 18.5 14.5 12.3 21.8 29.8 21.8 52.3.0 17.2-4.1 31.7-12.2 43.3-8.1 11.6-19.8 20-35 25l49.2 71.5h-27.3L3461.1 2202.7zM3491.3 2167.6c10.3-8.4 15.5-20.8 15.5-37 0-15.9-5.2-27.9-15.5-36s-25.1-12.2-44.3-12.2h-56v97.8h56C3466.2 2180.2 3481 2176 3491.3 2167.6z"/><path fill="#6d6e71" d="M3688.3 2082.4v69.2h106.2v23.2h-106.2v72.1h122.8v22.9h-146.9v-210.6h142.9v23.2H3688.3z"/><path fill="#6d6e71" d="M4147 2082.4v74h98.4v23.2H4147v90.2h-24.1v-210.6h133.8v23.2H4147z"/><path fill="#6d6e71" d="M4523.3 2072.8c16.8 9.4 30.2 22.3 40 38.4 9.8 16.2 14.8 33.9 14.8 53.3.0 19.5-4.9 37.4-14.8 53.6-9.8 16.3-23.2 29.1-40 38.6s-35.3 14.3-55.2 14.3c-20.3.0-38.8-4.7-55.7-14.3-16.8-9.5-30.2-22.4-40-38.6-9.8-16.3-14.8-34.1-14.8-53.6s4.9-37.3 14.8-53.5c9.8-16.2 23.2-29 40-38.3 16.8-9.4 35.4-14 55.7-14C4488.1 2058.6 4506.5 2063.3 4523.3 2072.8zM4425.2 2092.7c-13.1 7.4-23.6 17.5-31.4 30.1-7.8 12.6-11.8 26.5-11.8 41.7.0 15.3 3.9 29.3 11.8 42 7.8 12.7 18.3 22.8 31.4 30.2 13.1 7.4 27.4 11.1 42.9 11.1s29.7-3.7 42.7-11.1 23.3-17.4 31.1-30.2c7.7-12.7 11.6-26.7 11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30s-27.2-11.2-42.6-11.2C4452.6 2081.5 4438.3 2085.2 4425.2 2092.7z"/><path fill="#6d6e71" d="M4854.7 2247.7c-15.7 15.5-37.3 23.3-64.8 23.3-27.7.0-49.4-7.8-65.1-23.3-15.7-15.5-23.6-37-23.6-64.6v-124h24.1v124c0 20.3 5.8 36.1 17.3 47.5 11.6 11.4 27.3 17.1 47.3 17.1 20.1.0 35.8-5.7 47.1-17 11.4-11.3 17-27.2 17-47.7v-124h24.1v124C4878.2 2210.7 4870.4 2232.2 4854.7 2247.7z"/><path fill="#6d6e71" d="M5169.5 2269.8l-126.3-169.1v169.1h-24.1v-210.6h25l126.3 169.3v-169.3h23.8v210.6H5169.5z"/><path fill="#6d6e71" d="M5478.4 2073.1c16.4 9.3 29.4 21.9 38.9 37.9 9.6 16 14.3 33.9 14.3 53.5s-4.8 37.6-14.3 53.6c-9.5 16.1-22.6 28.7-39.3 37.9-16.6 9.2-35.2 13.8-55.5 13.8h-84.3v-210.6h85.2C5443.7 2059.2 5462 2063.8 5478.4 2073.1zM5362.3 2246.9h61.4c15.5.0 29.6-3.5 42.3-10.6s22.8-16.9 30.2-29.5c7.4-12.5 11.1-26.5 11.1-42s-3.8-29.4-11.3-41.9-17.7-22.3-30.6-29.6c-12.8-7.2-27-10.9-42.6-10.9h-60.5v164.5z"/><path fill="#6d6e71" d="M5668.6 2216.6l-23.5 53.2h-25.6l94.4-210.6h25l94.1 210.6h-26l-23.5-53.2H5668.6zM5725.8 2086.6l-46.9 106.8h94.4l-47.5-106.8z"/><path fill="#6d6e71" d="M5991 2082.4v187.4h-24v-187.4h-68.4v-23.2H6060v23.2h-69z"/><path fill="#6d6e71" d="M6175.9 2269.8v-210.6h24.1v210.6H6175.9z"/><path fill="#6d6e71" d="M6493.7 2072.8c16.8 9.4 30.2 22.3 40 38.4 9.8 16.2 14.8 33.9 14.8 53.3.0 19.5-4.9 37.4-14.8 53.6-9.8 16.3-23.2 29.1-40 38.6s-35.3 14.3-55.2 14.3c-20.3.0-38.8-4.7-55.7-14.3-16.8-9.5-30.2-22.4-40-38.6-9.8-16.3-14.8-34.1-14.8-53.6s4.9-37.3 14.8-53.5c9.8-16.2 23.2-29 40-38.3 16.8-9.4 35.4-14 55.7-14C6458.5 2058.6 6476.9 2063.3 6493.7 2072.8zM6395.6 2092.7c-13.1 7.4-23.6 17.5-31.4 30.1-7.8 12.6-11.8 26.5-11.8 41.7.0 15.3 3.9 29.3 11.8 42 7.8 12.7 18.3 22.8 31.4 30.2 13.1 7.4 27.4 11.1 42.9 11.1s29.7-3.7 42.7-11.1 23.3-17.4 31.1-30.2c7.7-12.7 11.6-26.7 11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30s-27.2-11.2-42.6-11.2C6423 2081.5 6408.8 2085.2 6395.6 2092.7z"/><path fill="#6d6e71" d="M6826.5 2269.8l-126.3-169.1v169.1h-24.1v-210.6h25l126.3 169.3v-169.3h23.8v210.6H6826.5z"/><linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-4516.6152" y1="-2338.7222" x2="-4108.4111" y2="-1861.3982" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset="0" style="stop-color:#F69923"/><stop offset=".3123" style="stop-color:#F79A23"/><stop offset=".8383" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_1_)" d="M1230.1 13.7c-45.3 26.8-120.6 102.5-210.5 212.3l82.6 155.9c58-82.9 116.9-157.5 176.3-221.2 4.6-5.1 7-7.5 7-7.5-2.3 2.5-4.6 5-7 7.5-19.2 21.2-77.5 89.2-165.5 224.4 84.7-4.2 214.9-21.6 321.1-39.7 31.6-177-31-258-31-258S1323.4-41.4 1230.1 13.7z"/><path fill="none" d="M1090.2 903.1c.6-.1 1.2-.2 1.8-.3l-11.9 1.3c-.7.3-1.4.7-2.1 1C1082.1 904.4 1086.2 903.7 1090.2 903.1z"/><path fill="none" d="M1005.9 1182.3c-6.7 1.5-13.7 2.7-20.7 3.7C992.3 1185 999.2 1183.8 1005.9 1182.3z"/><path fill="none" d="M432.9 1808.8c.9-2.3 1.8-4.7 2.6-7 18.2-48 36.2-94.7 54-140.1 20-51 39.8-100.4 59.3-148.3 20.6-50.4 40.9-99.2 60.9-146.3 21-49.4 41.7-97 62-142.8 16.5-37.3 32.8-73.4 48.9-108.3 5.4-11.7 10.7-23.2 16-34.6 10.5-22.7 21-44.8 31.3-66.5 9.5-20 19-39.6 28.3-58.8 3.1-6.4 6.2-12.8 9.3-19.1.5-1 1-2 1.5-3.1l-10.2 1.1-8-15.9c-.8 1.6-1.6 3.1-2.4 4.6-14.5 28.8-28.9 57.9-43.1 87.2-8.2 16.9-16.4 34-24.6 51-22.6 47.4-44.8 95.2-66.6 143.3-22.1 48.6-43.7 97.5-64.9 146.5-20.8 48.1-41.3 96.2-61.2 144.2-20 48-39.5 95.7-58.5 143.2-19.9 49.5-39.2 98.7-58 147.2-4.2 10.9-8.5 21.9-12.7 32.8-15 39.2-29.7 77.8-44 116l12.7 25.1 11.4-1.2c.4-1.1.8-2.3 1.3-3.4C396.7 1905.4 414.9 1856.4 432.9 1808.8z"/><path fill="none" d="M980 1186.8c.1.0.1.0.1-.1C980.1 1186.8 980.1 1186.8 980 1186.8z"/><path fill="#be202e" d="M952.6 1323c-10.6 1.9-21.4 3.8-32.5 5.7-.1.0-.1.1-.2.1 5.6-.8 11.2-1.7 16.6-2.6C942 1325.2 947.3 1324.1 952.6 1323z"/><path opacity=".35" fill="#be202e" d="M952.6 1323c-10.6 1.9-21.4 3.8-32.5 5.7-.1.0-.1.1-.2.1 5.6-.8 11.2-1.7 16.6-2.6C942 1325.2 947.3 1324.1 952.6 1323z"/><path fill="#be202e" d="M980.3 1186.7C980.2 1186.7 980.2 1186.7 980.3 1186.7c-.1.1-.2.1-.2.1 1.8-.2 3.5-.5 5.2-.8 7-1 13.9-2.2 20.7-3.7C997.5 1183.8 989 1185.2 980.3 1186.7z"/><path opacity=".35" fill="#be202e" d="M980.3 1186.7C980.2 1186.7 980.2 1186.7 980.3 1186.7c-.1.1-.2.1-.2.1 1.8-.2 3.5-.5 5.2-.8 7-1 13.9-2.2 20.7-3.7C997.5 1183.8 989 1185.2 980.3 1186.7z"/><linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-7537.7339" y1="-2391.4075" x2="-4625.4141" y2="-2391.4075" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_2_)" d="M858.6 784.7c25.1-46.9 50.5-92.8 76.2-137.4 26.7-46.4 53.7-91.3 80.9-134.7 1.6-2.6 3.2-5.2 4.8-7.7 27-42.7 54.2-83.7 81.6-122.9L1019.5 226c-6.2 7.6-12.5 15.3-18.8 23.2-23.8 29.7-48.6 61.6-73.9 95.5-28.6 38.2-58 78.9-87.8 121.7-27.6 39.5-55.5 80.9-83.5 123.7-23.8 36.5-47.7 74-71.4 112.5-.9 1.4-1.8 2.9-2.6 4.3L789 919.2C811.8 873.6 835.1 828.7 858.6 784.7z"/><linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-7186.1777" y1="-2099.3059" x2="-5450.7183" y2="-2099.3059" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset="0" style="stop-color:#282662"/><stop offset=".0954839" style="stop-color:#662E8D"/><stop offset=".7882" style="stop-color:#9F2064"/><stop offset=".9487" style="stop-color:#CD2032"/></linearGradient><path fill="url(#SVGID_3_)" d="M369 1981c-14.2 39.1-28.5 78.9-42.9 119.6-.2.6-.4 1.2-.6 1.8-2 5.7-4.1 11.5-6.1 17.2-9.7 27.4-18 52.1-37.3 108.2 31.7 14.5 57.1 52.5 81.1 95.6-2.6-44.7-21-86.6-56.2-119.1 156.1 7 290.6-32.4 360.1-146.6 6.2-10.2 11.9-20.9 17-32.2-31.6 40.1-70.8 57.1-144.5 53-.2.1-.3.1-.5.2.2-.1.3-.1.5-.2 108.6-48.6 163.1-95.3 211.2-172.6 11.4-18.3 22.5-38.4 33.8-60.6-94.9 97.5-205 125.3-320.9 104.2l-86.9 9.5C374.4 1966.3 371.7 1973.6 369 1981z"/><linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2418.5454" x2="-4461.8428" y2="-2418.5454" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_4_)" d="M409.6 1786.3c18.8-48.5 38.1-97.7 58-147.2 19-47.4 38.5-95.2 58.5-143.2s40.4-96.1 61.2-144.2c21.2-49 42.9-97.8 64.9-146.5 21.8-48.1 44-95.9 66.6-143.3 8.1-17.1 16.3-34.1 24.6-51 14.2-29.3 28.6-58.4 43.1-87.2.8-1.6 1.6-3.1 2.4-4.6L681.4 706.8c-1.8 2.9-3.5 5.8-5.3 8.6-25.1 40.9-50 82.7-74.4 125.4-24.7 43.1-49 87.1-72.7 131.7-20 37.6-39.6 75.6-58.6 113.9-3.8 7.8-7.6 15.5-11.3 23.2-23.4 48.2-44.6 94.8-63.7 139.5-21.7 50.7-40.7 99.2-57.5 145.1-11 30.2-21 59.4-30.1 87.4-7.5 24-14.7 47.9-21.5 71.8-16 56.3-29.9 112.4-41.2 168.3L353 1935.1c14.3-38.1 28.9-76.8 44-116C401.1 1808.2 405.4 1797.3 409.6 1786.3z"/><linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-7161.7642" y1="-2379.1431" x2="-5631.2524" y2="-2379.1431" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset="0" style="stop-color:#282662"/><stop offset=".0954839" style="stop-color:#662E8D"/><stop offset=".7882" style="stop-color:#9F2064"/><stop offset=".9487" style="stop-color:#CD2032"/></linearGradient><path fill="url(#SVGID_5_)" d="M243.5 1729.4c-13.6 68.2-23.2 136.2-28 203.8-.2 2.4-.4 4.7-.5 7.1-33.7-54-124-106.8-123.8-106.2 64.6 93.7 113.7 186.7 120.9 278-34.6 7.1-82-3.2-136.8-23.3 57.1 52.5 1e2 67 116.7 70.9-52.5 3.3-107.1 39.3-162.1 80.8 80.5-32.8 145.5-45.8 192.1-35.3C148.1 2414.2 74.1 2645 0 2890c22.7-6.7 36.2-21.9 43.9-42.6 13.2-44.4 100.8-335.6 238-718.2 3.9-10.9 7.8-21.8 11.8-32.9 1.1-3 2.2-6.1 3.3-9.2 14.5-40.1 29.5-81.1 45.1-122.9 3.5-9.5 7.1-19 10.7-28.6.1-.2.1-.4.2-.6l-107.9-213.2C244.6 1724.4 244 1726.9 243.5 1729.4z"/><linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2117.1309" x2="-4461.8428" y2="-2117.1309" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_6_)" d="M805.6 937c-3.1 6.3-6.2 12.7-9.3 19.1-9.3 19.2-18.8 38.8-28.3 58.8-10.3 21.7-20.7 43.9-31.3 66.5-5.3 11.4-10.6 22.9-16 34.6-16.1 35-32.4 71.1-48.9 108.3-20.3 45.8-41 93.4-62 142.8-20 47.1-40.3 95.9-60.9 146.3-19.5 47.9-39.3 97.3-59.3 148.3-17.8 45.4-35.9 92.1-54 140.1-.9 2.3-1.8 4.7-2.6 7-18 47.6-36.2 96.6-54.6 146.8-.4 1.1-.8 2.3-1.3 3.4l86.9-9.5c-1.7-.3-3.5-.5-5.2-.9 103.9-13 242.1-90.6 331.4-186.5 41.1-44.2 78.5-96.3 113-157.3 25.7-45.4 49.8-95.8 72.8-151.5 20.1-48.7 39.4-101.4 58-158.6-23.9 12.6-51.2 21.8-81.4 28.2-5.3 1.1-10.7 2.2-16.1 3.1-5.5 1-11 1.8-16.6 2.6.1.0.1-.1.2-.1 96.9-37.3 158-109.2 202.4-197.4-25.5 17.4-66.9 40.1-116.6 51.1-6.7 1.5-13.7 2.7-20.7 3.7-1.7.3-3.5.6-5.2.8.1.0.1.0.1-.1h.1c33.6-14.1 62-29.8 86.6-48.4 5.3-4 10.4-8.1 15.3-12.3 7.5-6.5 14.7-13.3 21.5-20.5 4.4-4.6 8.6-9.3 12.7-14.2 9.6-11.5 18.7-23.9 27.1-37.3 2.6-4.1 5.1-8.3 7.6-12.6 3.2-6.2 6.3-12.3 9.3-18.3 13.5-27.2 24.4-51.5 33-72.8 4.3-10.6 8.1-20.5 11.3-29.7 1.3-3.7 2.5-7.2 3.7-10.6 3.4-10.2 6.2-19.3 8.4-27.3 3.3-12 5.3-21.5 6.4-28.4-3.3 2.6-7.1 5.2-11.3 7.7-29.3 17.5-79.5 33.4-119.9 40.8l79.8-8.8-79.8 8.8c-.6.1-1.2.2-1.8.3-4 .7-8.1 1.3-12.2 2 .7-.3 1.4-.7 2.1-1l-273 29.9C806.6 935 806.1 936 805.6 937z"/><linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="-7554.8232" y1="-2132.0981" x2="-4642.5034" y2="-2132.0981" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_7_)" d="M1112.9 385.1c-24.3 37.3-50.8 79.6-79.4 127.5-1.5 2.5-3 5.1-4.5 7.6-24.6 41.5-50.8 87.1-78.3 137-23.8 43.1-48.5 89.3-74.3 139C854 839.5 830.8 885.4 807 934l273-29.9c79.5-36.6 115.1-69.7 149.6-117.6 9.2-13.2 18.4-27 27.5-41.3 28-43.8 55.6-92 80.1-139.9 23.7-46.3 44.7-92.2 60.7-133.5 10.2-26.3 18.4-50.8 24.1-72.3 5-19 8.9-36.9 11.9-54.1C1327.9 363.5 1197.6 380.9 1112.9 385.1z"/><path fill="#be202e" d="M936.5 1326.1c-5.5 1-11 1.8-16.6 2.6C925.5 1328 931 1327.1 936.5 1326.1z"/><path opacity=".35" fill="#be202e" d="M936.5 1326.1c-5.5 1-11 1.8-16.6 2.6C925.5 1328 931 1327.1 936.5 1326.1z"/><linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2027.484" x2="-4461.8433" y2="-2027.484" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_8_)" d="M936.5 1326.1c-5.5 1-11 1.8-16.6 2.6C925.5 1328 931 1327.1 936.5 1326.1z"/><path fill="#be202e" d="M980 1186.8c1.8-.2 3.5-.5 5.2-.8C983.5 1186.3 981.8 1186.6 980 1186.8z"/><path opacity=".35" fill="#be202e" d="M980 1186.8c1.8-.2 3.5-.5 5.2-.8C983.5 1186.3 981.8 1186.6 980 1186.8z"/><linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2037.7417" x2="-4461.8433" y2="-2037.7417" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_9_)" d="M980 1186.8c1.8-.2 3.5-.5 5.2-.8C983.5 1186.3 981.8 1186.6 980 1186.8z"/><path fill="#be202e" d="M980.2 1186.7z"/><path opacity=".35" fill="#be202e" d="M980.2 1186.7z"/><linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="-5738.0635" y1="-2039.799" x2="-5094.3457" y2="-2039.799" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_10_)" d="M980.2 1186.7z"/></svg>
</div>
</a>
<ul class="footer-link">
<li><a class="white" href="http://www.apache.org">Foundation</a></li>
<li><a class="white" href="http://www.apache.org/licenses/">License</a></li>
<li><a class="white" href="https://www.apache.org/security/">Security</a></li>
<li><a class="white" href="http://www.apache.org/events/current-event">Events</a></li>
<li><a class="white" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a class="white" href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
</ul>
</div>
</div>
<div class="col-6 text-white text-center container-center">
<p>Copyright &copy; 2022 The Apache Software Foundation, Licensed under the <a class="white" href="https://www.apache.org/licenses/LICENSE-2.0">Apache License Version 2.0</a></p>
<p>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
</div>
<div class="col-1"></div>
</div>
</div>
</footer>
</div>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"
integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN"
crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js"
integrity="sha512-UR25UO94eTnCVwjbXozyeVd6ZqpaAE9naiEUBK/A+QDbfSTQFhPGj5lOR6d8tsgbBk84Ggb5A3EkjsOgPRPcKA=="
crossorigin="anonymous"></script>
<script src='/js/tabpane-persist.js'></script>
<script src="/js/main.min.1a2e43037d7eeb7eb548659ffab8adc920ddeef68063a09913f04392dd3c1f19.js" integrity="sha256-Gi5DA31&#43;6361SGWf&#43;ritySDd7vaAY6CZE/BDkt08Hxk=" crossorigin="anonymous"></script>
<script src='/js/prism.js'></script>
</body>
</html>