Skip to content

Repository files navigation

Caoutsearch \ˈkawt͡ˈsɝtʃ\

Gem Version CI Status Ruby Style Guide Maintainability Test Coverage

JRuby Truffle Ruby

!! 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.

Documentation

Visit our offical documentation to understand how to use Caoutsearch.

Installation

Add the gem in your Gemfile:

bundle add caoutsearch

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

ArticleIndex.reindex(:tags)
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

ArticleSearch.search(published_on: [["now-1y", nil]]).aggregate(:popular_tags)

Contributing

  1. Don't hesitate to submit your feature/idea/fix in issues
  2. Fork the repository
  3. Create your feature branch
  4. Ensure RSpec & Rubocop are passing
  5. Create a pull request

Tests & lint

bundle exec rspec
bundle exec rubocop
bundle exec standardrb

To run RSpec against various version of Rails dependencies:

bundle exec appraisal install
bundle exec appraisal rspec

All of them can be run with:

bundle exec rake

License & credits

Please see LICENSE for further details.

Contributors: ./graphs/contributors

About

An alternative approach to index & search with Elasticsearch & Ruby on Rails

Topics

Resources

Stars

2 stars

Watchers

4 watching

Forks

Releases

Used by

Contributors

Languages