我们可以在elasticsearch过滤器中使用多个术语条件吗?

时间:2015-11-05 07:57:36

标签: elasticsearch filter elasticsearch-plugin

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

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

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

1 个答案:

答案 0 :(得分:4)

你几乎就在那里,你忘记了一个支架。这是正确的查询:

{
  "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
  4. 基本上,每个术语查询/过滤器都需要包含在其中。自己的牙套,他们需要兄弟姐妹。