README.md

# Elastic + Scrivener = :heart:

This library adds pagination capabiilties to [Elastic](https://github.com/radar/elastic).

## Installation

Add this package to your `mix.exs` `deps` definition:

```
defp deps do
  [
    {:scrivener_elastic, "~> 1.0.0"},
  ]
end
```

## Usage

Pagination happens on a per-module basis. Here's an example of a module configured to use both `Elastic.Document.API` and `Scrivener`.

```
defmodule Scrivener.Elastic.Post do
  @es_index "posts"
  @es_type "post"
  use Elastic.Document.API
  use Scrivener, page_size: 5, max_page_size: 10

  defstruct [:title, :body, :published, :id]

end
```

And here's how to do pagination:

```
alias Scrivener.Elastic.Post
...

page = Post.search_query(%{}) |> Post.paginate
```

You can get the documents from Elastic with `page.entries`.

You can pass `paginate` some options like `page_size` and `page` too:

```
page = Post.search_query(%{}) |> Post.paginate
```