查询DSL - 对过滤器的误解

时间:2011-11-29 05:13:18

标签: elasticsearch

我有一个如下所示的查询:

{
  "query": {
    "constant_score": 
      "filter": {
        "missing": {
          "field": "parent_id"
        }
      }
  }
},
"size": limit,
"from": offset
}

我的类型有parent_idwall_id字段。如何修改此查询,以便我可以获取所有没有parent_id且没有wall_id的类型?我似乎无法从文档中解读它。感谢您提供的任何帮助!

更新

我有以下查询可行,但我不喜欢标题上的cat query。有没有办法做到这一点,而无需添加“catchall?

{
  "query":{
  "filtered":{
     "query":{
        "field":{ "title":"*" }
     },
     "filter":{
        "and":{
           "filters":[
              {
                 "missing":{ "field":"parent_id" }
              },
              {
                 "missing":{ "field":"wall_id" }
              }
           ]
        }
     }
  }
 }, "size":10, "from":0
}

1 个答案:

答案 0 :(得分:7)

你几乎就在那里,你只需要在and查询下使用constant_score过滤器:

{
  "query": {
    "constant_score": {
      "filter": {
        "and":[
          { "missing":{ "field":"parent_id" }},
          { "missing":{ "field":"wall_id" }}
        ]
      }
    }
  }
}