Elastic4s - 找到多个确切值一个学期(Elastic4s - finding multi

2019-10-23 07:32发布

我试图筛选术语将被匹配的数组的值中的一个。

中继对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错误。

我怎样才能做到这一点?

Answer 1:

当调用termsFilter,该方法需要的变参调用Any* ,所以termsFilter("category", 1, 2)会工作。 但termsFilter("category", Array(1,2))被视为一个参数,因为阵列是任何过程的子类。 通过添加: _ *我们强迫斯卡拉看到它作为一个瓦尔ARG调用。

因此,这将工作:

val res =  ESclient.execute {
  search in "index" query {
    filteredQuery query {
      matchall
   } filter {
        termsFilter("category", Array(1,2) : _ *)
   }
}

也许所有的最好的解决方案是更新Iterables超载客户端。



文章来源: Elastic4s - finding multiple exact values for one term