2016-04-02 17 views
0

Yani, çalışmalıdır:Titan: Uzun mülkün maksimum değerini nasıl elde edersiniz? Ben uzun bir özelliğinin maksimum değere sahiptir köşe almak istiyorsanız

graph.traversal().V().has("type","myType").values("myProperty").max().next() 

Bu maksimum değeri bulmak için tüm köşe yüklemek için olduğu gibi gerçekten yavaş. Daha hızlı bir yolu var mı?

Herhangi bir dizin oluşturma yardımcı olabilir? Bileşik dizinlerin yardımcı olmayacağına inanıyorum ama ElasticSearch arka uç ile karışık indeksi kullanarak bunu yapmanın bir yolu var mı?

cevap

3

Sayısal değerde Karışık Dizin oluşturmak için Titan'ı kullanmak, Elasticsearch'ün özelliği doğru bir şekilde dizine eklemesine neden olur.

TitanGraph titanGraph = TitanFactory.open("titan-cassandra-es.properties"); 
TitanManagement management = graph.openManagement(); 

PropertyKey degreeKey = management.makePropertyKey("DEGREE").dataType(Long.class).make(); 

management.buildIndex("byDegree", Vertex.class) 
.addKey(degreeKey) 
.buildMixedIndex("search"); 

Şu anda bu hareket etmesi Titan alma sorunları yaşıyorsanız: Tür sizinle benzer, biz mülk DEGREE için aşağıdaki nedenle şu anda yapmak min max gelen bir özellik DEGREE tarafından sipariş tüm köşeleri bilmek istiyorum çabuk (nedense dizin oluşturmak ancak belirli sorgular için kullanmak mücadele edebilir) ama biz doğrudan Elasticsearch sorgulayabilir:

curl -XGET 'localhost:9200/titan/byDegree/_search?size=80' -d ' 
{ 
    "sort" : [ 
     { "DEGREE" : {"order" : "desc"}} 
    ], 
    "query" : { 

    } 
} 

şimdilik biz Titan ile indeks oluşturmak böylece cevap hızla son derecedöndürülür ancak sorgu elastik arama direkt olarak.

Kısa Yanıt: Sayısal aralıklar ile ihtiyaç duyulan şeyleri çok kolay bir şekilde yapabilmemiz için, aramızdaki sorunun en azından Titan'ın bu endeksleri tam olarak kullanması gerekiyor. Bununla birlikte, yürütmeye çalıştığınız geçiş, bizimkilerden daha basittir (sadece maks.), Böylece bu sorunlarla karşılaşmayabilirsiniz ve sadece Titan geçişleriyle tamamen yapışabilirsiniz.

Düzenleme:

Geçenlerde (etkilerse benim yaptığı gibi) elasticsearch ve titan ihtiyaçlarınızı yerine getirebilecek doğruladı. Sadece endekslerinizi nasıl yarattığınıza dikkat edin. Titan, Endeksinizi Text Match'e değil eşleşmesine ayarlanmış Type anahtarıyla oluşturduğunuz sürece, sorgunuzu hızlı bir şekilde yürütebilecektir.

+0

çok teşekkürler. Bu gerçekten çok iyi ama çok karmaşık. Umarım böyle bir ekleme gelecek sürümlerde Gremlin'e eklenir. –

+0

Kulağa daha karmaşık geldim çünkü cevap verdiğimde hala kendim çalışıyordum. Titan'ın sonundan gelen süreç aslında gerçekten basittir. Karma Endeksleri denemeyi tavsiye ederim –