elasticsearch,Scala,elasticsearch" /> elasticsearch,Scala,elasticsearch" />

Scala 值withFilter不是java.util.list的成员

Scala 值withFilter不是java.util.list的成员,scala,elasticsearch,Scala,elasticsearch,//这里我想返回一个攻击列表,但它显示了上面的错误 case class AggResult(bucketKey: String, bucketCount: Long, bucketValue: Double) 请注意,JavaConversions(在注释中链接)已被弃用 使用 导入scala.collection.JavaConverters_ 为了{ bucket for comprehension转换为flatMap/map和withFilter,然后您只能使用monaidic类型,只

//这里我想返回一个攻击列表,但它显示了上面的错误

case class AggResult(bucketKey: String, bucketCount: Long, bucketValue: Double)
请注意,JavaConversions(在注释中链接)已被弃用

使用

导入scala.collection.JavaConverters_
为了{

bucket for comprehension转换为flatMap/map和withFilter,然后您只能使用monaidic类型,只需将java.util.List转换为scala.collections.immutable.Listfor(线程“main”中的bucket异常)java.lang.ClassCastException:java.util.Collections$UnmodifiableRandomAccessList不能强制转换为BigginSight$处的scala.collection.immutable.List。ExtractAdvanceUlts(BigginSight.scala:105)位于BigginSight$.delayedEndpoint$BigginSight$delayedInit$body.apply(BigginSight.scala:10)在scala.Function0.apply$mcV$sp(Function0.scala:34)在scala.Function0.apply$mcV$sp$(Function0.scala:34)您不能将其强制转换到scala列表中,因为它是java.util列表…请查看此java转换API:您是否尝试过在
yield
部分中移动
acgresult
构造函数调用?我猜您是在尝试发出一组
acgresult
case class AggResult(bucketKey: String, bucketCount: Long, bucketValue: Double)
/* Error:(113, 35) value withFilter is not a member of
java.util.List[org.elasticsearch.search.aggregations.bucket.terms.Terms.Bucket]
for {
  bucket: Terms.Bucket <-  topLevelBuckets
*/
def extractAggResults_(client: TcpClient): Array[AggResult] = {

    val nestingAggregation = client.execute(aggQuery).await

    val topLevelBuckets = nestingAggregation.aggregations.termsResult("by_users").getBuckets
    topLevelBuckets.toArray() map(bucket =>  AggResult(bucket.asInstanceOf[Terms.Bucket].getKeyAsString, bucket.asInstanceOf[Terms.Bucket].getDocCount, bucket.asInstanceOf[Terms.Bucket].getAggregations.get("total_usage").asInstanceOf[Sum].getValue))
  }
import scala.collection.JavaConverters._

for {
  bucket <- topLevelBuckets.asScala
} yield AggResult(bucket.getKeyAsString, bucket.getDocCount,
    bucket.getAggregations.get("total_usage").asInstanceOf[Sum].getValue)