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

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"
                ]
              }
            }
          ]
        }
      }
    }
  }
}

这将评估两个条件:
  • 您的 Activity 必须是abc / def / ghi / jkl其中之一oj​​it_rli
  • 用户必须是user_1 / user_2 / user_3

  • 基本上,每个查询/过滤器术语都需要用大括号括起来,并且必须是 sibling 。

    关于elasticsearch - 我们可以在Elasticsearch过滤器中使用多个条件吗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33539250/

    10-15 20:21