The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Changes for version 0.20 - 2012-11-16

  • BREAKING CHANGE
    • has_changed() and old_values() was implemented with triggers on every doc class attribute. This was buggy because 1) it wasn't applied to attributes from roles 2) it didn't check arrays/hashes correctly 3) it was slow We now handle all of the above correctly, by comparing canonical versions of the deflated object with the data loaded from ES.
      • has_changed() was called by save() to prevent saving if the object hadn't actually changed. We no longer do this - if you call save(), your object will be saved. If you want to run this check yourself, you can do:
        • $doc->save if $doc->has_changed;
      • old_value() has been removed because it requires old_values() to build a comparison of all attributes that have changed, so it is more efficient to just call old_values() once, eg:
        • $old = $doc->old_values; if (exists $old->{foo}) {...} if (exists $old->{bar}) {...}
  • ENHANCEMENT
    • added apply_field_settings() to Elastic::Doc to make it easier to configure attributes applied from roles, when you may not have edit access to the role itself.

Documentation

What is Elastic::Model and how do I use it?
Controlling how your attributes are indexed
Fine-tuning how your attributes are indexed
Making attributes unique
An introduction to Elastic::Model
Differences between relational DBs and NoSQL document stores
How to use the ElasticSearch Query DSL
Overview of the filters available in ElasticSearch
Queries and filters for nested fields
Overview of the queries available in ElasticSearch
How to reindex your data from an old index to a new index
How to grow from a single node to a massive cluster
An optional in-memory cache, essential for keeping weak refs live
Which search method to use with a View, and how to use the results.
Explanation of terminology and concepts

Modules

Adds Elastic::Model functionality to your object classes
A NoSQL document store with full text search for Moose objects using ElasticSearch as a backend.
Administer aliases in ElasticSearch
Bulk-saving of multiple docs for increased throughput
A class to represent deleted doc objects which are still in scope
The domain (index or alias) where your docs are stored.
Create and administer indices in ElasticSearch
A meta-class for Docs
A meta-class for Models
Class-to-type map
A wrapper for individual search results
An iterator over bounded/finite search results
A cacheable iterator over bounded/finite search results
An iterator over unbounded search results
The role applied to your Doc classes
Provides admin methods common to indices and aliases
A generic iterator role
The role applied to your Model
An iterator role for search results
ElasticSearch backend for document read/write requests
Keeps objects alive and connected
An Elastic::Model specific subclass of ElasticSearch::SearchBuilder
A default implementation of the ElasticSearch backend
An internal use trait
Add ElasticSearch specific keywords to your attribute definitions.
A base class for all TypeMaps
Type maps for commonly used types
The default type map used by Elastic::Model
Type maps for ElasticSearch-specific types
Type maps for core Moose types
Type maps for objects and Moose classes
Type maps for MooseX::Types::Structured
MooseX::Types for general and internal use
The Unique ID of a document in an ElasticSearch cluster
Views to query your docs in ElasticSearch