View Source Changelog

v0.8.3 - 2024-10-18

New if option for replicas which decides if they should be updated or not.

  • If not provided, the replica will be updated (so no impact on existing configurations)
  • Must be nil|true|false or the name (atom) of a arity-0 func which returns a boolean
  • If provided, the replica will be updated only if the value is true or the function returns true

Useful for Algolia's A/B testing which requires replicas and only deploy them in production.

v0.8.2 - 2024-09-16

  • Upgrading all dependencies
  • Added dependabot to the repository

v0.8.1 - 2024-09-11

New

  • Added new optional settings default_filters to be applied automatically when calling reindex without query or reindex_atomic. Defaults to %{} which was the previous behavior.
defmodule BlondeBeerIndexer do
  use Algoliax.Indexer,
    index_name: :blonde_beers,
    object_id: :name,
    schemas: [Beer],
    default_filters: %{where: [kind: "blonde"]} # <--- can be a map
end

defmodule BeerIndexer do
  use Algoliax.Indexer,
    index_name: :various_beers,
    object_id: :name,
    schemas: [Beer1, Beer2, Beer3],
    default_filters: :get_filters # <--- can be a function

  def get_filters do
    %{
      Beer1 => %{where: [kind: "blonde"]},  # <--- custom filter for Beer1
      :where => [kind: "brune"] # <--- Will be used for Beer2 and Beer3
    }
  end
end

Contributing

  • New CONTRIBUTING.md file
  • Simplified the config/test.exs file
  • Provide a .env.example file to help contributors to setup their environment

v0.8.0 - 2024-09-11

Breaking changes

  • Errors for get_object and get_objects are now of arity 4 and returns the original request as last attribute

New

  • Added possibility to have multiple indexes for a model (applies for replicas as well)
  • Added build_object/2 with the index name as second parameter (useful for translations for example)

v0.7.2 - 2023-09-18

Breaking changes

  • require Elixir >= 1.15 and OTP 26

v0.7.1 - 2022-03-29

New

v0.7.0 - 2022-03-29

Breaking changes

  • Indexer operation returns a %Algoliax.Reponse{} (#51)

Bug fix

  • Ensure clean up on reindex fail

v0.6.0 - 2021-06-10

Updates

  • Replace deprecated hmac function with new :crypto API mac function to support OTP-24

Breaking changes

  • Drop support for OTP 21. OTP 22+ is now required.

v0.5.0 - 2021-03-04

New

Breaking changes

  • generate_secured_api_key/1 is removed in favor of generate_secured_api_key/2
  • Drop support of Elixir 1.9. Elixir 1.10 or greater required

Updates

  • update hackney to 1.17

v0.4.3 - 2020-08-31

New

  • add ability to customize objectID by overriding get_object_id/1

Improvement

  • Make sure index is configured before any action.

v0.4.2 - 2020-05-14

New

  • add ability to provide preloads for reindex and reindex_atomic function
defmodule People do
  use Algoliax.Indexer,
    index_name: :people,
    object_id: :reference,
    schemas: [
      {__MODULE__, [:animals]}
    ]
    algolia: [
      attribute_for_faceting: ["age"],
      custom_ranking: ["desc(updated_at)"]
    ]

end

v0.4.1 - 2020-05-01

New

  • add generate_secured_api_key!/1

v0.4.0 - 2020-04-24

New

  • add ability configure :recv_timeout for hackney.
  • add ability to pass query_filters or Ecto.Query to reindex/2.
filters = %{where: [name: "John"]}
People.reindex(filters)

query = from(p in People, where: p.name == "john")
People.reindex(query)

breaking changes

  • improved generate_secured_api_key/1
  • remove attributes macros in favor of build_object/1
  • remove :prepare_object options
  • remove :preloads options

v0.3.0 - 2020-04-04

New

  • add prepare_object to modify object before send to algolia
  • add ability to provide build_object/1 instead of attributes
  • add schemas option to override caller

Bug fix

  • Fix pagination when cursor_field different than :id
  • delete_object/1 and reindex w/ force_delete: true don't need to build entire object

breaking changes

  • change dependencies to optional (ecto)
  • Move algoliax to algoliax/indexer.
# old
use Algoliax,
  ...

# New
use Algoliax.Indexer,
  ...
  • Move algolia specific settings into :algolia option
# old
use Algoliax.Indexer,
  index_name: :test,
  attributes_for_faceting: ["age"],
  searchable_attributes: ["full_name"],
  custom_ranking: ["desc(updated_at)"],
  ...

# New
use Algoliax.Indexer,
  index_name: :test,
  algolia: [
    attributes_for_faceting: ["age"],
    searchable_attributes: ["full_name"],
    custom_ranking: ["desc(updated_at)"]
  ],
  ...

v0.2.0 - 2020-01-27

Enhancements

  • add option to customize column used to find records in batch (cursor_field)
  • add preloads to find records in batch.