我正在使用bluemix中的ibm图表,并且对此更新。
我创建了一个名为' test'使用bluemix提供的GUI并上传样本数据' Music Festival'由ibm在该图中提供。
现在我正在尝试查询所有具有标签'参与者'的顶点。使用以下查询。
def gt = graph.traversal();
gt.V().hasLabel("attendee");
但我收到错误
Error: Error encountered evaluating script def gt = graph.traversal();gt.V().hasLabel("attendee"); with reason com.thinkaurelius.titan.core.TitanException: Could not find a suitable index to answer graph query and graph scans are disabled: [(~label = attendee)]:VERTEX
不确定我做错了什么。
有人可以告诉我哪里出错吗?
如何摆脱此错误并获得预期的输出?
由于
答案 0 :(得分:2)
@Radhika,您的Gremlin查询是有效的Gremlin查询。但是,某些供应商(例如IBM Graph和Titan)选择仅允许用户使用索引的查询启动查询。这是为了确保您获得查询的性能。单独调用hasLabel()
会给您Could not find a suitable index...
错误,因为您无法为标签创建索引。您需要做的是按照此步骤执行一个使用索引属性的步骤:
graph.traversal();gt.V().hasLabel("band").has("genre","pop");
已在样本音乐节数据的架构中创建了genre
的索引,如下所示
{
"propertyKeys": [
{ "name": "name", "dataType": "String", "cardinality": "SINGLE" },
{ "name": "gender", "dataType": "String", "cardinality": "SINGLE" },
{ "name": "age", "dataType": "Integer", "cardinality": "SINGLE" },
{ "name": "genre", "dataType": "String", "cardinality": "SINGLE" },
{ "name": "monthly_listeners", "dataType": "String", "cardinality": "SINGLE" },
{ "name":"date","dataType":"String","cardinality":"SINGLE" },
{ "name":"time","dataType":"String","cardinality":"SINGLE" }
],
"vertexLabels": [
{ "name": "attendee" },
{ "name": "band" },
{ "name": "venue" }
],
"edgeLabels": [
{ "name": "bought_ticket", "multiplicity": "MULTI" },
{ "name":"advertised_to","multiplicity":"MULTI" },
{ "name":"performing_at","multiplicity":"MULTI" }
],
"vertexIndexes": [
{ "name": "vByName", "propertyKeys": ["name"], "composite": true, "unique": false },
{ "name": "vByGender", "propertyKeys": ["gender"], "composite": true, "unique": false },
{ "name": "vByGenre", "propertyKeys": ["genre"], "composite": true, "unique": false}
],
"edgeIndexes" :[
{ "name": "eByBoughtTicket", "propertyKeys": ["time"], "composite": true, "unique": false }
]
这就是为什么上述查询有效并且你需要做同样的事情。
如果您没有架构,请创建一个架构。你可以在之后建模 一个在上面或遵循API doc
为您即将开始的属性创建(顶点/标签)索引
你的遍历来自。在此示例中,Name, Gender and Genre
表示
边缘属性的顶点属性和name
。
致电schema endpoint 将您的架构添加到图表
建议在添加任何数据之前创建架构 您的图表,以便您以后不必重新编制索引。那会拯救你 很多时候。
创建架构后,您无法修改自己创建的内容 已经,但您可以稍后添加新的属性/索引。
请查看Java and Nodejs的以下代码示例,了解要使用的确切代码。
我希望有帮助