查询指定了多个字段值

时间:2012-11-06 09:50:09

标签: filter elasticsearch

我正在尝试执行一个指定了多个字段的elasticsearch查询。这是一些伪代码,希望能说明我的意图:

"query" : {
  "query_string" : { "query" : "william" }
},
"filter" : {
  "missing" : { "field" : "membership_expires_on" }
},
"filter" : {
  "missing" : { "field" : "gender" }
},
"filter" : {
  "terms" : { "status" : "p"}
},
"filter" : {
  "terms" : { "unit_id" : "4"}
}

我正在尝试将所有这些过滤器放在一起,但是从elasticsearch doc我无法弄清楚如何将这些特定过滤器放入单个查询中。任何帮助将不胜感激!

更新:这是我到目前为止所拥有的:

{
  "from": 0,
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "missing": {
                "field": "membership_expires_on"
              }
            },
            {
              "term": {
                "status": "p"
              }
            },
            {
              "missing": {
                "field": "gender"
              }
            },
            {
              "term": {
                "unit": "4"
              }
            }
          ]
        }
      },
      "query": {
        "query_string": {
          "query": "william"
        }
      }
    }
  },
  "size": 10
}

但这没有结果,所以我做错了。我是否以非法方式使用内部阵列的bool过滤器?

更新2 :我已经确认上面的JSON确实是一个有效的查询,所以我的数据/索引可能有些不对劲。那将是另一天的问题: - )

1 个答案:

答案 0 :(得分:2)

查看BoolFilter。它应该有所帮助。