#
Caoutsearch \ˈkawt͡ˈsɝtʃ\
!! Gem under development before public release !!
Caoutsearch is a new Elasticsearch integration for Ruby and/or Rails.
It provides a simple but powerful DSL to perform complex indexing and searching, while securely exposing search criteria to a public and chainable API, without overwhelming your models.
Caoutsearch only supports Elasticsearch 8.x right now.
It is used in production in a robust application, updated and maintained for several years at Solutions & Territoire.
Caoutsearch was inspired by awesome gems such as elasticsearch-rails or search_flip.
Depending on your search scenarios, they may better suite your needs.
#
Overview
Caoutsearch let you create Index
and Search
classes to manipulate your data :
class ArticleIndex < Caoutsearch::Index::Base
property :title
property :published_on
property :tags
def tags
records.tags.public.map(&:to_s)
end
end
class ArticleSearch < Caoutsearch::Search::Base
filter :title, as: :match
filter :published_on, as: :date
filter :tags
has_aggregation :popular_tags, {
filter: { term: { published: true } },
aggs: {
published: {
terms: { field: :tags, size: 10 }
}
}
}
end
You can then index your records
ArticleIndex.reindex
Or search through them:
ArticleSearch.search(published_on: [["now-1y", nil]]).aggregate(:popular_tags)