Запрос вasticsearch с несколькими диапазонами на несколько дат

Последующийrange_query возвращает результат, как и ожидалось:

{"query": {
    "bool": {
      "must": [
        {
          "range": {
            "created_at": {
              "gte": "2013-12-09"
            }
          }
        }
      ]
    }
  }
}

Но, вместе с несколькими запросами диапазона, ничего не возвращает:

{"query": {
    "bool":{
      "must": [
        {
          "and": [
            {
              "range": {
                "created_at": {
                  "gte": "2013-12-09"
                }
              }
            },
            {
              "range": {
                "happens_on": {
                  "lte": "2013-12-16"
                }
              }
            },
            {
              "range": {
                "created_at": {
                  "lte": "2013-12-14"
                }
              }
            }
          ]
        }
      ]
    }
  }
}

Как правильно использовать несколько запросов range_queries для нескольких полей?

РЕДАКТИРОВАТЬ: Ах, хорошо, вот где я использую range_filter, а не range_query? Это звучало многообещающе, поэтому я переписал свой запрос, используя только фильтр с одним диапазоном. Выкладываю все это здесь, на случай, если я испорчу запрос где-нибудь еще. Я выполняю GET, и все внутри исходного ключа на самом деле является JSON, но я удалил экранированные дефисы для удобства чтения:

{
  "source": {
    "filtered": {
      "filter": {
        "and": [
          {
            "term": {
              "restricted": false
            }
          },
          {
            "not": {
              "term": {
                "deleted": true
              }
            }
          },
          {
            "range": {
              "happens_on": {
                "lte": "2013-12-16"
              }
            }
          }
        ]
      },
      "query": {
        "bool": {
          "must": [
          ]
        }
      }
    },
    "from": 0,
    "size": 10
  }
}

К сожалению, моя проблема все та же: я не получаю никаких хитов.

EDIT2: Итак, спускаясь по аллее диапазонов внутри предложения must, как предложил Njal. Это дает мне многодиапазонный запрос:

{
  "source": {
    "filter": {
      "and": [
        {
          "term": {
            "restricted": false
          }
        },
        {
          "not": {
            "term": {
              "deleted": true
            }
          }
        }
      ]
    },
    "from": 0,
    "query": {
      "bool": {
        "must": [
          {
            "range": {
              "happens_on": {
                "gte": "2013-12-06"
              }
            }
          },
          {
            "range": {
              "created_at": {
                "gte": "2013-12-15"
              }
            }
          },
          {
            "range": {
              "happens_on": {
                "lte": "2013-12-17"
              }
            }
          },
          {
            "range": {
              "created_at": {
                "lte": "2013-12-17"
              }
            }
          }
        ]
      }
    },
    "size": 10
  }
}

Все еще никаких результатов не возвращено. Я делаю какие-либо очевидные ошибки здесь?

Ответы на вопрос(1)

Ваш ответ на вопрос