2015-05-12 58 views
1

您好我是stroing一個ID字段和一個Scala的可變設置像這樣如何以檢索存儲的階可變設置從ElasticSearch

var genreIdSet = scala.collection.mutable.Set[Int]() 
genreIdSet+=1 
genreIdSet+=2 
genreIdSet+=3 

bulkRequest.add(client.prepareIndex("testdb","test","123") 
     .setSource(jsonBuilder() 
        .startObject() 
         .field("uuid","123") 
         .field("GenreIdSet",genreIdSet) 
        .endObject()  
     ) 
) 

現在,我想在這裏擷取此文件彈性搜索代碼

val get=client.prepareGet("testdb","test","123") 
     .setOperationThreaded(false) 
     .setFields("uuid","GenreIdSet") 
     .execute() 
     .actionGet() 

    id=get.getField("uuid").getValue.toString().toInt 
    var a=get.getField("GenreIdSet").getValue.toString 

和我得到以下輸出

ID is 123 
GenreIdSet is Set(1, 2, 3) 

我想遍歷該設置並存儲它的價值(例如:1 2 3)在一個新的斯卡拉mutable設置我如何實現這一點,請幫助我也是新的elasticSearch和我從ElasticSearch java api幫助。請幫助謝謝

回答

1

您可以插入一個階可變設置在elasticsearch使用陣列方法

var genreIdSet = scala.collection.mutable.Set[Int]() 
genreIdSet+=1 
genreIdSet+=2 
genreIdSet+=3 
var xb:XContentBuilder=XContentFactory.jsonBuilder().startObject().field("uuid",artistImpl.getUuid) 
     xb.startArray("GetGenreIdSet") 
     for(n<-genreIdSet) 
     { 
      xb.value(n) 
     } 
     xb.endArray() 
     xb.endObject() 


val bulkRequest=client.prepareBulk() 
bulkRequest.add(client.prepareIndex("testdb","test","123") 
     .setSource(xb) 
) 

檢索此陣列及其值存儲到這裏一個新的階可變集是碼

id=get.getField("uuid").getValue.toString().toInt 
     var a=get.getField("GetGenreIdSet").getValues.toArray() 
      for(number<-a) 
      { 
       genreIdSet+=number.toString().toInt 
      }