scala - Elastic4s-为一个术语找到多个精确值

标签 scala elasticsearch elastic4s

我试图过滤一个术语以匹配数组中的值之一。

中继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/

相关文章:

scala - 如何将带有映射模板的索引放入带有elastic4s的 Elasticsearch 中?

scala - RemoteTransportException,对文本字段进行聚合时,在文本字段上禁用Fielddata

scala - elastic4s bool 查询中的elasticsearch “more like this”

Scala:路径依赖类型的等价

scala - 如何将隐式类参数映射到特征变量?

scala - 无法在 IntelliJ IDEA 2016.1 : Unknown method ScalaCompileOptions. getForce() 中刷新 gradle 项目

elasticsearch - 3节点Elasticsearch设置的理想分片数量是多少

scala - 函数在 Spark 中返回一个空列表

search - 使用Elasitc搜索前缀查询在性能方面有多好?

node.js - 使用Node JS在Elasticsearch 7.3.2中创建自定义映射类型