- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我们的大型 Titan Graph 数据库中,我注意到以下行为:
\,,,/
(o o)
-----oOOo-(_)-oOOo-----
14:16:35 WARN org.apache.hadoop.util.NativeCodeLoader - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
gremlin> g = TitanFactory.open('/home/willem/workspace/ovc/src/main/resources/titan-cassandra-es.properties')
14:16:44 WARN com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration - Local setting cache.db-cache-time=0 (Type: GLOBAL_OFFLINE) is overridden by globally managed value (180000). Use the ManagementSystem interface instead of the local configuration to control this setting.
==>titangraph[com.thinkaurelius.titan.diskstorage.cassandra.astyanax.AstyanaxStoreManager:[10.1.0.200]]
gremlin> g.indexQuery("mediaSerialNBStringIdx","v.mediaSerialNB:EB*").vertices().count()
==>937
gremlin> g.V().has("mediaSerialNB",PREFIX,"EB").count()
14:17:17 WARN com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx - Query requires iterating over all vertices [(mediaSerialNB PREFIX EB)]. For better performance, use indexes
因此,使用indexQuery(...) 直接寻址索引会利用索引,但将其留给查询优化器,它不会发现该特定字段上存在 MixedIndex 的事实。
这是与 elasticsearch 1.2.2 一起运行的 Titan 0.5.3。
这些是索引细节:
gremlin> m = g.getManagementSystem()
==>com.thinkaurelius.titan.graphdb.database.management.ManagementSystem@6a26cb53
gremlin> m.getGraphIndex("mediaSerialNBStringIdx").isMixedIndex()
==>true
gremlin> m.getGraphIndex("mediaSerialNBStringIdx").getFieldKeys()
==>mediaSerialNB
gremlin> m.getGraphIndex("mediaSerialNBStringIdx").getBackingIndex()
==>search
gremlin> k = m.getPropertyKey("mediaSerialNB")
==>mediaSerialNB
gremlin> m.getGraphIndex("mediaSerialNBStringIdx").getIndexStatus(k)
==>INSTALLED
索引状态为“已安装”而不是“已启用”这一事实是否给了我线索?如果是这样,我该如何帮助elasticsearch启用它?
阅读有关重新索引的内容,我发现了以下内容:
mgmt.updateIndex(rindex, SchemaAction.ENABLE_INDEX);
但这就是我们的数据库告诉我们的:
gremlin> mediaSerialNBKey = g.getPropertyKey("mediaSerialNB")
==>mediaSerialNB
gremlin> mediaSerialNBStringIdx = m.getGraphIndex("mediaSerialNBStringIdx")
==>com.thinkaurelius.titan.graphdb.database.management.TitanGraphIndexWrapper@7c54dcff
gremlin> mediaSerialNBStringIdx.getParametersFor(mediaSerialNBKey)
==>mapping->STRING
==>mapped-name->4h6t
==>status->INSTALLED
gremlin> m.updateIndex(mediaSerialNBStringIdx, SchemaAction.ENABLE_INDEX)
Update action [ENABLE_INDEX] does not apply to any fields for index [com.thinkaurelius.titan.graphdb.database.management.TitanGraphIndexWrapper@7c54dcff]
最佳答案
是的,您需要启用索引。为此,索引必须处于 REGISTERED 状态,而不是像您的情况那样处于 INSTALLED 状态。通常,当使用相同存储后端的所有 titan 实例确认索引发生变化时,这种转换会自动发生。
但是,您可能有一些实例不再处于事件状态。您可以在 gremlin 控制台中列出所有实例:
m=g.getManagementSystem()
m.getOpenInstances()
如果有任何死亡实例,您应该使用手动删除它们
mgmt.forceCloseInstance("dead-instance-id")
mgmt.commit()
您可以在文档 section 27.2 中找到更多信息.
根据我的经验,最好在执行索引维护之前关闭除 gremlin session 之外的所有实例。
现在,您可以手动注册索引(参见section 28.7.1):
m = g.getManagementSystem()
mediaSerialNBStringIdx = m.getGraphIndex("mediaSerialNBStringIdx")
m.updateIndex(mediaSerialNBStringIdx, SchemaAction.REGISTER_INDEX)
m.commit()
检查:
m = g.getManagementSystem()
k = m.getPropertyKey("mediaSerialNB")
m.getGraphIndex("mediaSerialNBStringIdx").getIndexStatus(k)
// should return REGISTERED
现在您可以成功启用索引:
m = g.getManagementSystem()
mediaSerialNBStringIdx = m.getGraphIndex("mediaSerialNBStringIdx")
m.updateIndex(mediaSerialNBStringIdx, SchemaAction.ENABLE_INDEX)
m.commit()
关于indexing - titan elasticsearch 不使用索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29122916/
执行以下遍历时: graph.addVertex("a") graph.addVertex("b") graph.addVertex("c") graph.traversal().V().range(
例如,我想在查询时排除一些顶点 ID。 第 1 步:我正在带领用户跟随我 (1234): g.V(1234).outE("following") 输出: 9876,3246,2343,3452,123
我写了一个 JUnit 测试来检查 generate-modern.groovy如果 marko 存在,则绘制图表。 我的小鬼查询是 "g.V().has('name','marko')"; 正如您在
在我的系统中,我要求节点上的边数必须存储为顶点上的内部属性以及特定输出边上的以顶点为中心的索引。这自然需要我在所有数据加载完成后计算节点上的边数。我这样做如下: long edgeCount = gr
目标 我有一个足够简单的任务需要完成:设置特定边属性的权重。以这个场景为例: 我想做的是更新 weight 的值. 附加要求 如果边不存在,则应创建它。 两个节点之间最多只能存在一条相同类型的边(即,
一个非常基本的问题 我刚刚将Titan从0.54升级到Titan 1.0 Hadoop 1/TP3版本3.01。 我在删除的值时遇到问题 Property key: Cardinality.LIST/
我是泰坦的新手。 我正在使用ubuntu 12.04并使用从deb软件包安装的cassandra 2.0和ES 1.0。 我试图让ES与titan一起工作。 gremlin> g = TitanF
我正在关注 http://s3.thinkaurelius.com/docs/titan/1.0.0/getting-started.html我的 Windows 机器上的指南。 但我在第一步就陷入困
我对 Titan/Gremlin/TinkerPop3 非常陌生,正在尝试使用 Restful API 接口(interface)来创建/修改/删除数据库中的顶点/边。 我主要想看看是否可以使用tin
我正在使用以下Rexster查询: string gremlinQuery = "g.v(" + companyVertexId + ").transform{[salaryInfo:it.outE
我正在使用 Titan-1.0.0,我想将其迁移到 janusgraph-0.1.1。我需要做哪些配置更改?我还想使用 JanusGraph 重用 Titan 的数据。 最佳答案 从 Titan 迁移
我想删除两个顶点之间的边,所以我在 java tinkerpop3 中的代码如下 private void removeEdgeOfTwoVertices(Vertex fromV, Vertex t
我正在尝试掌握 Gremlin。彻底阅读文档后,我似乎仍然在概念上苦苦挣扎。 我正在创建一个基本的新闻源,遵循此处 Neo4j 文档中的模型: http://neo4j.com/docs/snapsh
我在 Spring Web 应用程序中使用 Titan。当我添加新边或删除一个顶点时,它实际上已删除但未反射(reflect)在我的网页中。我的查询仍然得到旧的边或顶点。 为此,我必须重新启动我的应用
我一直试图在 Gremlin 查询中找出这个 if-else。假设 g.V({0}) 是下面的群顶点。 var q = "g.V({0}).as('groupName', 'groupId',
我有一个带有几个索引的图表。它们是两个带有标签限制的复合指数。 (两者在不同的属性/标签上完全相同)。 一个似乎确实有效,但另一个无效。我已经完成了以下 profile() 以进行双重检查: 一个叫K
背景:我正在尝试使用 this approach 实现一个时间序列版本数据库,使用 gremlin (tinkerpop v3)。 我想获取给定身份节点(蓝色)的最新状态节点(红色)(由包含时间戳范围
很明显,在两个顶点之间找到边的简单方法是: graph.traversal().V(outVertex).bothE(edgeLabel).filter(__.otherV().is(inVertex
我目前正在阅读TinkerPop3 Documentation 我感到困惑的是,我找不到关于next()的任何解释。 例如,w/next()或w/o next()返回相同的文字 gremlin> g.
在DataStax收购Aurelius之后,自从Titan 1.0.0在2015年9月发布以来,自那时以来几乎没有提交过,所以我想知道在生产中使用TitanDB是否安全。谁能给我一些见识? 最佳答案
我是一名优秀的程序员,十分优秀!