2015-05-12 3 views
0

У меня есть scala mutable Set, который я хочу индексировать в своем elasticsearch как массив, но способ, которым я делаю свою ошибку, кодElasticSearch: Текущий контекст не ARRAY, а OBJECT при попытке индексирования массива

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

val bulkRequest=client.prepareBulk() 
bulkRequest.add(client.prepareIndex("testdb","test","123") 
     .setSource(myMethod) 
) 
val bulkResponse =bulkRequest.execute().actionGet() 
def myMethod: XContentBuilder={ 
def json={jsonBuilder().startObject()} 

json.field("uuid","123") 
json.startArray("GenreIdSet") 
for(n<-genreIdSet) 
{ 
    json.value(n) 
} 
json.endArray() 
json.endObject() 

    } 

, но он дает мне ошибку

-Current context not an ARRAY but OBJECT 
org.elasticsearch.common.jackson.core.JsonGenerationException: Current context not an ARRAY but OBJECT 
    at org.elasticsearch.common.jackson.core.JsonGenerator._reportError(JsonGenerator.java:1487) ~[elasticsearch-1.5.0.jar:na] 
    at org.elasticsearch.common.jackson.core.json.UTF8JsonGenerator.writeEndArray(UTF8JsonGenerator.java:298) ~[elasticsearch-1.5.0.jar:na] 
    at org.elasticsearch.common.xcontent.json.JsonXContentGenerator.writeEndArray(JsonXContentGenerator.java:74) ~[elasticsearch-1.5.0.jar:na] 
    at org.elasticsearch.common.xcontent.XContentBuilder.endArray(XContentBuilder.java:233) ~[elasticsearch-1.5.0.jar:na] 
    at models.ArtistModels.ArtistModelsESReadWrite.ArtistImplStoreES.myMethod$1(ArtistImplStoreES.scala:41) ~[classes/:na] 
    at models.ArtistModels.ArtistModelsESReadWrite.ArtistImplStoreES.writeES(ArtistImplStoreES.scala:60) ~[classes/:na] 
    at models.ArtistModels.ArtistModelsESReadWrite.ArtistImplWriteToESActor$$anonfun$receive$1.applyOrElse(ArtistImplWriteToESActor.scala:21) ~[classes/:na] 

, пожалуйста, помогите мне, где я делаю ошибку благодаря

ответ

1

Вы можете попробовать делать это

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) 
) 

val bulkResponse =bulkRequest.execute().actionGet() 

 Смежные вопросы

  • Нет связанных вопросов^_^