查询DSL - 对过滤器的误解

swa*_*ins 7 elasticsearch

我有一个看起来像这样的查询:

{
  "query": {
    "constant_score": 
      "filter": {
        "missing": {
          "field": "parent_id"
        }
      }
  }
},
"size": limit,
"from": offset
}
Run Code Online (Sandbox Code Playgroud)

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

UPDATE

我有以下查询可行,但我不喜欢query标题上的catchall .有没有办法做到这一点,而不必添加"catchall?

{
  "query":{
  "filtered":{
     "query":{
        "field":{ "title":"*" }
     },
     "filter":{
        "and":{
           "filters":[
              {
                 "missing":{ "field":"parent_id" }
              },
              {
                 "missing":{ "field":"wall_id" }
              }
           ]
        }
     }
  }
 }, "size":10, "from":0
}
Run Code Online (Sandbox Code Playgroud)

DrT*_*ech 7

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

{
  "query": {
    "constant_score": {
      "filter": {
        "and":[
          { "missing":{ "field":"parent_id" }},
          { "missing":{ "field":"wall_id" }}
        ]
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)