Skip to content

Search: add format support for date range filter and queries #7189

@dadoonet

Description

@dadoonet

When the date format is defined in mapping, you can not use another format when querying using range date query or filter.

For example, this won't work:

DELETE /test 

PUT /test/t/1
{
  "date": "2014-01-01"
}

GET /test/_search
{
  "query": {
    "filtered": {
      "filter": {
        "range": {
          "date": {
            "from": "01/01/2014"
          }
        }
      }
    }
  }
}

It causes:

Caused by: org.elasticsearch.ElasticsearchParseException: failed to parse date field [01/01/2014], tried both date format [dateOptionalTime], and timestamp number

It could be nice if we can support at query time another date format just like we support analyzer at search time on String fields.

Something like:

GET /test/_search
{
  "query": {
    "filtered": {
      "filter": {
        "range": {
          "date": {
            "from": "01/01/2014",
            "format": "dd/MM/yyyy"
          }
        }
      }
    }
  }
}

Same for queries.

For now, we can still support it by setting in mapping different expected formats:

DELETE /test 

PUT /test
{
  "mappings": {
    "t": {
      "properties": {
        "date": {
          "type": "date",
          "format": "yyyy-MM-dd||dd/MM/yyyy"
        }
      }
    }
  }
}

PUT /test/t/1
{
  "date": "2014-01-01"
}

GET /test/_search
{
  "query": {
    "filtered": {
      "filter": {
        "range": {
          "date": {
            "from": "01/01/2014"
          }
        }
      }
    }
  }
}

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions