Query DSL - непонимание фильтров - PullRequest
7 голосов
/ 29 ноября 2011

У меня есть запрос, который выглядит так:

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

Мой тип имеет поле parent_id и wall_id. Как я могу изменить этот запрос, чтобы получить все типы, которые не имеют parent_id и не имеют wall_id? Я не могу расшифровать это из документов. Спасибо за любую помощь!

UPDATE

У меня есть следующий запрос, который работает, но мне не нравится бросок query в заголовке. Есть ли способ сделать это, не добавляя «catchall»?

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

1 Ответ

7 голосов
/ 29 ноября 2011

Вы почти у цели, вам просто нужно использовать фильтр and под вашим запросом constant_score:

{
  "query": {
    "constant_score": {
      "filter": {
        "and":[
          { "missing":{ "field":"parent_id" }},
          { "missing":{ "field":"wall_id" }}
        ]
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...