我试图过滤一个术语以匹配数组中的值之一。
中继ES https://www.elastic.co/guide/en/elasticsearch/guide/current/_finding_multiple_exact_values.html
GET /my_store/products/_search
{
"query" : {
"filtered" : {
"filter" : {
"terms" : {
"price" : [20, 30]
}
}
}
}
}
我尝试了这个:
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当然是Any的子类。通过添加: _ *
,我们强制scala将其视为vars arg调用。
所以这将工作:
val res = ESclient.execute {
search in "index" query {
filteredQuery query {
matchall
} filter {
termsFilter("category", Array(1,2) : _ *)
}
}
也许最好的解决方案是更新要在Iterables上重载的客户端。
关于scala - Elastic4s-为一个术语找到多个精确值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30735854/