Scala Elastic4s-查找一个项的多个精确值
我试图筛选一个匹配数组中某个值的项 转播 我试过这个:Scala Elastic4s-查找一个项的多个精确值,scala,
elasticsearch,elastic4s,Scala,
elasticsearch,Elastic4s,我试图筛选一个匹配数组中某个值的项 转播 我试过这个: val res = ESclient.execute { search in "index" query { filteredQuery query { matchall } filter { termsFilter("category", Array(1,2)) } } 但是
val res = ESclient.execute {
search in "index" query {
filteredQuery query {
matchall
} filter {
termsFilter("category", Array(1,2))
}
}
但是从ES那里得到了一个错误
我该怎么做呢?调用termsFilter时,该方法需要调用
Any*
的var args,因此termsFilter(“category”,1,2)
可以工作。但是termsFilter(“category”,Array(1,2))
被视为一个参数,因为Array当然是任何函数的子类。通过添加:*
我们强制scala将其视为vars arg调用
因此,这将起作用:
val res = ESclient.execute {
search in "index" query {
filteredQuery query {
matchall
} filter {
termsFilter("category", Array(1,2) : _ *)
}
}
也许最好的解决方案是更新客户端,使其在Iterables上过载。Grr。“但是从ES那里得到了一个错误。”什么错误?请看这里@Paul不是一个有意义的错误:
(内部:,{“错误”:“[elastic1][inet[/xxx.xx.xx.xx:9300]][search]”})
它没有堆栈跟踪?。在我有时间测试之前,你能试试termsFilter(“类别”,数组(1,2):*)吗properly@monkjack是的。为什么?我会写一个完整的回复来解释
val res = ESclient.execute {
search in "index" query {
filteredQuery query {
matchall
} filter {
termsFilter("category", Array(1,2) : _ *)
}
}