#
Date
For a date filter defined like this:
class ArticleSearch < Caoutsearch::Search::Base
...
filter :published_on, as: :date
end
You can now search the matching index with the published_on
criterion:
Article.search(published_on: Date.today)
and the following query will be generated to send to elasticsearch:
{
"query": {
"bool": {
"filter": [
{ "range": { "published_on": { "gte": "2022-23-11", "lte": "2022-23-11"}}}
]
}
}
}
The date filter accepts multiple types of arguments :
# Search for articles published on a date:
Article.search(published_on: Date.today)
# Search for articles published before a date:
Article.search(published_on: { less_than: "2022-12-25" })
Article.search(published_on: { less_than_or_equal: "2022-12-25" })
Article.search(published_on: ..Date.new(2022, 12, 25))
Article.search(published_on: [[nil, "now-2w/d"]])
# Search for articles published after a date:
Article.search(published_on: { greater_than: "2022-12-25" })
Article.search(published_on: { greater_than_or_equal: "2022-12-25" })
Article.search(published_on: Date.new(2022, 12, 25)..)
Article.search(published_on: [["now-1w/d", nil]])
# Search for articles published between two dates:
Article.search(published_on: { greater_than: "2022-12-25", less_than: "2023-12-25" })
Article.search(published_on: Date.new(2022, 12, 25)..Date.new(2023, 12, 25))
Article.search(published_on: [["now-1w/d", "now/d"]])
Dates of various formats are handled:
"2022-10-11"
Date.today
Time.zone.now
We also support elasticsearch's date math
"now-1h"
"now+2w/d"