具有多个参数的 Scala Elasticsearch 查询

Scala Elasticsearch query with multiple parameters

我需要从 Elasticsearch table 中删除某些条目。我在文档中找不到任何提示。我也是 Elasticsearch 菜鸟。要删除的行将由其 typeowner_id 标识。是否可以使用多个参数调用 deleteByQuery?或者有什么替代方法可以达到同样的效果?

我正在使用这个库:https://github.com/sksamuel/elastic4s

table 的样子:

| id |  type | owner_id | cost |
|------------------------------|
| 1  | house |    1     | 10   |
| 2  | hut   |    1     | 3    |
| 3  | house |    2     | 16   |
| 4  | house |    1     | 11   |

在代码中目前看起来像这样:

deleteByQuery(someIndex, matchQuery("type", "house"))

我需要这样的东西:

deleteByQuery(someIndex, matchQuery("type", "house"), matchQuery("owner_id", 1))

但这行不通,因为 deleteByQuery 只接受一个查询。

在此示例中,它应删除 ID 为 1 和 4 的条目。

以 JSON 和其余 API 格式进行解释,以使其更清楚。

索引示例文档

put myindex/_doc/1
{
  "type" : "house",
  "owner_id" :1
  
}

put myindex/_doc/2
{
  "type" : "hut",
  "owner_id" :1
  
}

put myindex/_doc/3
{
  "type" : "house",
  "owner_id" :2
  
}

put myindex/_doc/4
{
  "type" : "house",
  "owner_id" :1
  
}

使用布尔查询搜索

GET myindex/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "type": "house"
          }
        }
      ],
      "filter": [
        {
          "term": {
            "owner_id": 1
          }
        }
      ]
    }
  }
}

及查询结果

 "hits" : [
      {
        "_index" : "myindex",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 0.35667494,
        "_source" : {
          "type" : "house",
          "owner_id" : 1
        }
      },
      {
        "_index" : "myindex",
        "_type" : "_doc",
        "_id" : "4",
        "_score" : 0.35667494,
        "_source" : {
          "type" : "house",
          "owner_id" : 1
        }
      }
    ]