我们可以在弹性搜索过滤器中使用多个术语条件吗

Can we use multiple terms condition in elasticsearch filters

是否可以对 bool 过滤器中的特定字段使用多个术语条件?

query": {
      "filtered": {
         "filter": {
            "bool": {
               "must": [
                  {
                     "terms": {
                        "events": [
                           "abc",
                           "def",
                           "ghi",
                           "jkl"
                        ]
                     },
                     "terms" : {
                        "users" : [
                          "user_1",
                          "user_2",
                          "user_3"
                        ]
                     }
                  }
               ]
            }
         }
      }
   }

第一个术语过滤器工作正常,但我无法使用第二个术语,如果我对上述查询有任何错误,请更正。

你快到了,你忘记了一个牙套。这是正确的查询:

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "terms": {
                "events": [
                  "abc",
                  "def",
                  "ghi",
                  "jkl"
                ]
              }
            },
            {
              "terms": {
                "users": [
                  "user_1",
                  "user_2",
                  "user_3"
                ]
              }
            }
          ]
        }
      }
    }
  }
}

这将评估两个条件:

  1. 您的活动必须是abc/def/ghi/jkl
  2. 之一
  3. 用户必须是 user_1/user_2/user_3

基本上每个术语 query/filter 都需要用自己的大括号括起来,并且它们需要是兄弟姐妹。