Tag: neo4j

小图的Neo4J在Ubuntu 16.04上使用了大量的内存

我已经在具有8GB和4核的Ubuntu 16.04虚拟机(Hyper-V)中安装了Neo4J v3.3.0(社区版)。 我有一个非常小的图(30节点),它只是用于阅读(每3秒约1次),它很less被写入。 我们想要扩展更多的图表,但是每三天(有时候会less一些)我们的服务器崩溃,因为Java占用了2GB以上的空间,而且顶部显示了300%的CPU使用率。 对我来说这是没有意义的,请问我可以让我知道如何configurationJava或Neo4J,以防止这种情况? 谢谢 我在/etc/neo4j/neo4j.conf文件中有以下configuration: dbms.query_cache_size=5000 dbms.threads.worker_count=4 dbms.memory.heap.initial_size=2g dbms.memory.heap.max_size=2g dbms.memory.pagecache.size=2g 发生这种情况时,日志文件显示以下错误: ERROR [onbvrcRunnableBoltWorker] Worker for session 'ecfe4a7f-1714-4ba3-9e98-a692bf153b45' crashed. Java heap space java.lang.OutOfMemoryError: Java heap space 也有这些可疑的消息(有很多): WARN [onkicMonitorGc] GC Monitor: Application threads blocked for 4680ms. ERROR [onbvtBoltMessagingProtocolV1Handler] Failed to write response to driver Unable to write to the closed output channel org.neo4j.bolt.v1.packstream.PackOutputClosedException: […]

与NodeJS和Neo4jasynchronous行为的问题

我是一个自学的新手程序员,使用Angular.js,Node.js和graphics数据库neo4j。 现在我试图得到一个非常基本的查询来执行并返回数据到客户端。 执行后,我得到一个closures服务器的错误。 接收到获取请求后执行以下function: exports.test = function (req, res) { var neo4j = require('neo4j'); var db = new neo4j.GraphDatabase('http://localhost:7474'); var query = [ 'MATCH n', 'RETURN n.name, n, labels(n)' ]; db.query(query, function (err, results) { if (err) {throw err}; var data = results.map(function(result) { return result; }); res.send(data) } )}; 我在控制台日志中得到以下错误:java.lang.ClassCastException:java.util.ArrayList不能转换为java.lang.String (我可以提供整个日志,如果它会certificate是有用的) 我将非常感激任何见解。

在graphenedb自动索引

如何在graphenedb 1.9.3 neo4j实例中启用和configuration节点自动索引? 我不认为我有权访问neo4j.properties文件。 我应该在应用程序中做这个工作吗? 谢谢, 埃迪

parsing树结果/得到儿童

我目前正在开发一个新的应用程序,我需要pipe理位置(大洲>国家>地区>城市)。 我试图(没有成功)使用密码从neo4j直接获取树: MATCH p = (r:Location)-[:CONTAINS*]->() WHERE r.category='continent' RETURN p AS path 现在,我想parsing这些数据,所以我可以这样做: MATCH (r:Location)-[:CONTAINS]->(r2) WHERE r.category='continent' OPTIONAL MATCH (r2)-[:CONTAINS]->(r3) OPTIONAL MATCH (r3)-[:CONTAINS]->(r4) OPTIONAL MATCH (r4)-[:CONTAINS]->(r5) OPTIONAL MATCH (r6)-[:CONTAINS]->(r6) RETURN r.name, r.category, r2.name, r2.category, r3.name, r3.category, r4.name,r4.category, r5.name, r5.category, r6.name, r6.category 但这不是我等待的回应,我不喜欢这个解决scheme,因为最多有6个关系。 如果我这样做,我冒险破坏树。 [ { 'r.name': 'Europe','r.category': 'continent','r2.name': 'Germany','r2.category': 'country','r3.name': null,'r3.category': null,'r4.name': null,'r4.category': null,'r5.name': null,'r5.category': […]

如何获取node-neo4j返回节点的数据只

我正在使用node-neo4j连接到neo4jgraphics数据库。 我注意到,每当我试图得到所有的节点(例如用户),json结果返回有太多的信息,我不需要。 以下是返回所有用户节点的代码: User.getAll = function (callback) { var query = [ 'MATCH (user:User)', 'RETURN user', ].join('\n'); db.query(query, null, function (err, results) { if (err) return callback(err); var users = results.map(function (result) { return new User(result['user']); }); callback(null, users); }); }; 它给了我这些json respsonse; [ { "_node": { "_nodeNeo4j": { "version": "1.1.0", "constructor": "Node" }, "_data": […]

neo4j – 查找所有与节点关系的节点,这些节点与x长度的属性值列表相匹配

更具体地说,我想要做下面的事情(使用node / JS,如果有帮助的话): 假设你有一个3个工作标准('JavaScript','PHP','MySQL')的列表。 我有一个graphics设置,其中每个Person节点可以连接到许多Skill节点。 我希望能够运行一个查询,该查询将返回至less有一个连接到查询中指定的所有技能节点的所有Person节点,然后按每个用户有多less正面连接进行sorting。 如果作业标准是一个variables,那么使这个查询工作的最有效的方法是什么? 这是我到目前为止。 再次,这工作,但我如何使OR语句variables? MATCH (n:Persons)-[r:KNOWS]-(x:Skill) WHERE x.name = 'PHP' OR x.name = 'JavaScript' OR x.name = 'MySql' RETURN DISTINCT n COUNT(n) ORDER BY COUNT(n) DESC

Neo4j,如何索引并给节点ID

我对neo4j有点新,我想用neo4j和nodejs开始构build一个应用程序。 据我所知,neo4j为每个创build的节点添加了id ,而这个id不应该在db外使用,这就意味着如果我有用户,那么用id来查看用户(创build用户时neo给出的id相同)不是这样聪明。 所以问题是: 什么将是最好的,为什么要找一个用户? 电子邮件? 可能是,但并不是应用程序中的每一件事都有一个像用户的电子邮件的唯一标识符 我看到几篇关于uuid ,让我们假设我正在使用它..我可以保存该字段与名称id保存吗? 或者我需要一些其他的名字? 如果我希望该字段用作索引,我是否需要做一些特殊的事情? (我希望通过id进行search的速度很快。) uuid生成一个非常长的string,是不是索引该string的开销? 索引数字更快,不是吗? 如果不使用uuid ,你认为是其他select?

Neo4J和其他数据库中唯一ID的最佳实践?

目前在我的Node.Js应用程序上运行Neo4J我使用node-uuid模块为我的数据库对象提供唯一的ID。 使用该模块的uuid.v1()函数,我得到了类似的东西 81a0b3d0-e4d0-11e3-ac56-73f5c88681be 现在,我的请求很长,有时在一个查询中有数百个节点和边。 所以你可以想象它们变得巨大,因为每个节点和边缘都必须有唯一的ID。 你知道如果我可以使用更短的ID系统,以便在我的项目数量增长后不会遇到任何问题吗? 我的意思是我知道我可以逃脱只有前8个符号(因为有36^8 > 2 Trl组合,但是它们随机生成时performance如何?随着节点数量的增加,机会是多less随机生成的ID不会落入已经存在的ID中? 另一个问题 – 如何交换当前的身份证系统到新的? 再生新的更短的ID最好的方法是什么? 谢谢!

以KOA-NEO4J或BOLT的forms传递一组属性和节点作为POST语句

我正在构build一个连接到NEO4J实例的REST API。 我使用koa-neo4j库作为基础( https://github.com/assister-ai/koa-neo4j-starter-kit )。 我是所有这些技术的初学者,但由于这个论坛的一些帮助,我有基本的function工作。 例如,下面的代码允许我创build一个标签为“metric”的新节点,并设置名称和dateAdded属性。 url: /metric?metricName=Test&dateAdded=2/21/2017 index.js app.defineAPI({ method: 'POST', route: '/api/v1/imm/metric', cypherQueryFile: './src/api/v1/imm/metric/createMetric.cyp' }); createMetric.cyp” CREATE (n:metric { name: $metricName, dateAdded: $dateAdded }) return ID(n) as id 但是,我正在努力想知道如何处理更复杂的例子。 如果事先不知道在创build新节点时要添加多less属性,或者想要在单个后置语句中创build多个节点,我该如何处理情况。 理想情况下,我希望能够传递类似JSON的东西作为POST的一部分,它将包含我想要创build的所有节点,标签和属性。 是这样的可能吗? 我尝试使用下面的Cypher查询并在POST正文中传递JSONstring,但它不起作用。 UNWIND $props AS properties CREATE (n:metric) SET n = properties RETURN n 我可以更好地切换到Neo4j Rest API,而不是使用BOLT协议和KOA-NEO4J框架。 从我的研究中,我认为最好使用BOLT,但是我希望Rest API作为我的前后端之间的中间层,所以如果长远来说更容易,我愿意改变。 谢谢您的帮助!

neo4j约束删除节点

我有一个问题,在删除的节点上抛出一个约束exception。 cypher语句“match(n)where ID(n)= 272 return ID(n),n”返回0行,但是当我尝试创build一个先前有约束值的新logging时,下面的exception仍然是抛出。 仅供参考,约束是在一个属性包含一个string[] – 也许约束唯一性与数组打破? 在Ubuntu 12.04上使用Java API(OpenJDK 7)通过nodejs / java npm(v sweet combo :)使用NEO4J 2.0.0M06) 临时解决方法:删除约束并重新创build它(从此开始工作)。 是否有一个工具/模式命令强制Neo检查完整性? 引起:org.neo4j.kernel.impl.api.constraints.UniqueConstraintViolationKernelException:节点272已经存在与标签1和属性4 = [Ljava.lang.String; @ 3e4cf524在org.neo4j.kernel.api.operations.ConstraintEnforcingEntityOperations。 (org.neo4j.kernel.impl.api.LockingStatementOperations.nodeSetProperty(LockingStatementOperations.java:234))的org.neo4j.kernel.api.operations.ConstraintEnforcingEntityOperations.nodeSetProperty(ConstraintEnforcingEntityOperations.java:85) org.neo4j.kernel.api.OperationsFacade.nodeSetProperty(OperationsFacade.java:462)at org.neo4j.kernel.impl.core.NodeProxy.setProperty(NodeProxy.java:214)… 5 more