带有valueMap()和toList()的gremlin查询需要时间才能得到结果
我正在使用嵌入式模式下部署的janus graph。我正在使用java。并触发以下查询 -->g.V().已('deleted',false).valueMap()//速度慢 -->g.V().has('deleted',false)。toList()//慢 在实现复合索引之后,上述查询也需要时间 -->g.V().has('deleted',false)//fast 上面的查询速度很快,并且使用在已删除键上创建的已实现的复合索引 还使用java代码尝试了同样的方法带有valueMap()和toList()的gremlin查询需要时间才能得到结果,gremlin,janusgraph,janus,Gremlin,Janusgraph,Janus,我正在使用嵌入式模式下部署的janus graph。我正在使用java。并触发以下查询 -->g.V().已('deleted',false).valueMap()//速度慢 -->g.V().has('deleted',false)。toList()//慢 在实现复合索引之后,上述查询也需要时间 -->g.V().has('deleted',false)//fast 上面的查询速度很快,并且使用在已删除键上创建的已实现的复合索引 还使用java代码尝试了同样的方法 List&l
List<Vertex> list = new ArrayList<>();
DateTime dt1 = new DateTime();
JanusGraphQuery<? extends JanusGraphQuery> query = GraphClient.getJGraph().query();
Iterator iterator = query.has("deleted",false).vertices().iterator();
while(iterator.hasNext()) {
Vertex next = (Vertex) iterator.next();
getPropertyMapByVertex(next); //time consuming to convert vertex into Map.
list.add(next);
}
public static Map<String, Object> getPropertyMapByVertex(Vertex vertex) {
Map<String, Object> propertyMap = new HashMap<>();
try {
if (vertex != null) {
Iterator<VertexProperty<Object>> properties = vertex.properties();
if (properties != null) {
while (properties.hasNext()) {
Property<Object> property = properties.next();
propertyMap.put(property.key(), property.value());
}
propertyMap.put(GraphConstants.VERTEX_ID, vertex.id());
}
}
} catch (Exception e) {
logger.error("Exception in getPropertyMapByVertex : {}", ExceptionUtils.getStackTrace(e));
}
return propertyMap;
}
List List=new ArrayList();
DateTime dt1=新的DateTime();
JanusGraphQuery我没有关注JanusGraph的开发进度,但是如果multiQuery
API仍然可用,您应该尝试一下:
List<Vertex> vertices = g.V().has('deleted',false).toList();
graph.multiQuery().addAllVertices(vertices).properties();
列出顶点=g.V().has('deleted',false).toList();
graph.multiQuery().addAllVertices(顶点).properties();
这是从内存中编写的未经测试的代码,最终看起来可能有点不同
但是,由于您提到g.V().has('deleted',false.)。toList()
很慢,但是g.V().has('deleted',false)
很快,我不确定您是否真的了解发生了什么。后一条语句本身没有任何作用,而前一条语句实际上获取了所有顶点。我没有跟踪JanusGraph中的开发进度,但是如果多查询API仍然可用,您应该尝试一下:
List<Vertex> vertices = g.V().has('deleted',false).toList();
graph.multiQuery().addAllVertices(vertices).properties();
列出顶点=g.V().has('deleted',false).toList();
graph.multiQuery().addAllVertices(顶点).properties();
这是从内存中编写的未经测试的代码,最终看起来可能有点不同
但是,由于您提到g.V().has('deleted',false.)。toList()
很慢,但是g.V().has('deleted',false)
很快,我不确定您是否真的了解发生了什么。后一条语句本身不做任何事情,而前一条语句实际上获取所有顶点