匹配由Titan索引的弹性搜索数据

时间:2015-02-24 13:29:11

标签: solr elasticsearch lucene graph-databases titan

我已经在elasticsearch中索引了titan数据,它运行良好并且已编入索引,但是当我使用REST API查看elasticsearch中的数据时。列/属性名称与Titan不同。

例如,我在向Titan插入数据时索引了年龄

final PropertyKey age = mgmt.makePropertyKey("age").dataType(Integer.class).make();
mgmt.buildIndex("vertices",Vertex.class).addKey(age).buildMixedIndex(INDEX_NAME);

如果我在elasticsearch中看到相同的话

{
      "_index" : "titan",
      "_type" : "vertices",
      "_id" : "sg",
      "_score" : 1.0,
      "_source":{"6bp":30}
    }, 

查看我能理解的数据“6bp”是年龄。这个转换是如何完成的?我该如何解码呢?

我的目标是在ElasticSearch上向Titan索引插入数据。用户查询应使用ElasticSearch客户端搜索ElasticSearch,因为我们需要ElasticSearch支持的更多搜索功能,如果搜索数据,则使用Titan查询获取相关结果。

1 个答案:

答案 0 :(得分:2)

字段名称为长编码。您可以使用此类

进行反向编码
com.thinkaurelius.titan.util.encoding.LongEncoding

或者,如果可以使用它,更好的选择是使用字段映射显式指定搜索字段名称:

  

默认情况下,Titan将对属性键进行编码,以便为混合索引中的属性键生成唯一的字段名称。如果想要在外部索引后端直接查询混合索引,则后端很难处理并且难以辨认。对于此用例,可以通过参数显式指定字段名称。

mgmt = g.getManagementSystem()
name = mgmt.makePropertyKey('bookname').dataType(String.class).make()
mgmt.buildIndex('booksBySummary',Vertex.class).addKey(name,com.thinkaurelius.titan.core.schema.Parameter.of('mapped-name','bookname')).buildMixedIndex("search")
mgmt.commit()

http://s3.thinkaurelius.com/docs/titan/0.5.1/index-parameters.html#_field_mapping