Elastic4s - 为一个术语找到多个精确值
Elastic4s - finding multiple exact values for one term
我正在尝试过滤一个术语以匹配数组中的一个值。
在 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 上过载。
我正在尝试过滤一个术语以匹配数组中的一个值。
在 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 上过载。