theablefew / stretchy

Elasticsearch Models for Rails with an ActiveRecord-like behavior
https://theablefew.github.io/stretchy/#/
MIT License
2 stars 0 forks source link
aggregations elasticsearch gem opensearch querydsl ruby-on-rails

stretchy-model

Stretchy Image

Stretchy provides Elasticsearch/Opensearch models in Rails applications with an Rails-like model interface.

Features

Stretchy simplifies the process of querying, aggregating, and managing Elasticsearch-backed models, allowing Rails developers to work with search indices as comfortably as they would with traditional Rails models.

Follow the guides to learn more about:

Read the Documentation or follow the examples below:

Examples

Installation

Install the gem and add to the application's Gemfile by executing:

 bundle add stretchy-model

If bundler is not being used to manage dependencies, install the gem by executing:

  gem install stretchy-model

[!TIP] If using OpenSearch make sure to add the gem to your Gemfile.

bundle add opensearch-ruby

Rails Configuration ```sh rails credentials:edit ``` #### Add elasticsearch credentials ```yaml elasticsearch: url: localhost:9200 # or if using opensearch # opensearch: # host: https://localhost:9200 # user: admin # password: admin # transport_options: # ssl: # verify: false ``` #### Create an initializer

config/initializers/stretchy.rb

```ruby Stretchy.configure do |config| config.client = Elasticsearch::Client.new Rails.application.credentials.elasticsearch # or if using OpenSearch # config.client = OpenSearch::Client.new Rails.application.credentials.opensearch end ```

Development

After checking out the repo, run bin/setup to install dependencies. You can also run bin/console for an interactive prompt that will allow you to experiment.

[!TIP] Full documentation on Elasticsearch Query DSL and Aggregation options

Testing

Act Run github action workflow locally ```sh brew install act --HEAD ``` ```sh act -P ubuntu-latest=ghcr.io/catthehacker/ubuntu:runner-latest ```
Elasticsearch ``` docker-compose up elasticsearch ``` ``` bundle exec rspec ```
Opensearch ``` docker-compose up opensearch ``` ``` ENV['BACKEND']=opensearch bundle rspec ```

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/theablefew/stretchy. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.

License

The gem is available as open source under the terms of the MIT License.