scala调用api操作elasticsearch时long类型问题解决

在scala写spark程序的时候,为了方便控制,会调用java的api进行操作elasticsearch,这时候,需要一个map,接收具体的字段,这地方有会一个问题,就是接受的这个map必须是AnyRef类型的,比如我们需要存入一个long类型的值,比如时间是个long,那么直接写入就会有问题,因为scala里面AnyRef不包含数值类型,而是属于AnyVal类型。遇到这种情况,我们使用下面的方式,进行强制转换就能解决这个问题
val map=scala.collection.mutable.Map[String,AnyRef]()

    map.put("age","26".toLong.asInstanceOf[AnyRef])

    map.put("name","ll")

    val map2=scala.collection.JavaConversions.mutableMapAsJavaMap(map)

    val indexRequest = new IndexRequest("hyj2017", "test","bbb").source(map2)
    proos.add(indexRequest)


    proos.awaitClose(10, TimeUnit.SECONDS);
    client.close()

猜你喜欢

转载自hanyingjun318.iteye.com/blog/2387099