ElasticsearchRecord - CHANGELOG
[1.8.1] - 2024-05-07
- [add] new elasticsearch mapping types (percolator, geo, vector, texts, ...)
- [ref]
ElasticsearchRecord::Relation#limit
to detect Float::INFINITY
to also set the max_result_window
- [fix]
ElasticsearchRecord::SchemaMigration
only returning the first ten migrations (broke migrated migrations)
- [fix]
ElasticsearchRecord::Relation::CalculationMethods#calculate
method incompatibility - renamed to #calculate_aggregation
(+ alias to #calculate
)
- [fix]
ElasticsearchRecord::ModelApi#bulk
method not correctly generating data for 'delete'
[1.8.0] - 2024-01-10
- [ref] major method & dependency refactoring for
rails 7.1
- (Does NOT work with rails 7.0)
- [add] new repository branch
rails-7-1-stable
to support different rails version
- [ref] gemspec to lock on rails 7.1
[1.7.3] - 2024-05-07 (no gem release)
- [add] new elasticsearch mapping types (percolator, geo, vector, texts, ...)
- [ref]
ElasticsearchRecord::Relation#limit
to detect Float::INFINITY
to also set the max_result_window
- [fix]
ElasticsearchRecord::SchemaMigration
only returning the first ten migrations (broke migrated migrations)
- [fix]
ElasticsearchRecord::Relation::CalculationMethods#calculate
method incompatibility - renamed to #calculate_aggregation
(+ alias to #calculate
)
- [fix]
ElasticsearchRecord::ModelApi#bulk
method not correctly generating data for 'delete'
[1.7.2] - 2024-01-10
- [ref] gemspec to lock on rails 7.0
[1.7.1] - 2024-01-09
- [fix]
ElasticsearchRecord::Relation
calculation methods return with different nodes
- [ref]
ElasticsearchRecord::Relation#calculate
removes default value of node
- [ref]
ActiveRecord::ConnectionAdapters::ElasticsearchAdapter#api
prevents inaccurate variable interpretation of log
[1.7.0] - 2024-01-09
- [add]
ElasticsearchRecord::Relation#boxplot
calculation method
- [add]
ElasticsearchRecord::Relation#stats
calculation method
- [add]
ElasticsearchRecord::Relation#string_stats
calculation method
- [add]
ElasticsearchRecord::Relation#matrix_stats
calculation method
- [add]
ElasticsearchRecord::Relation#median_absolute_deviation
calculation method
- [add]
ElasticsearchRecord::Base#esql
+ ElasticsearchRecord::Base#find_by_esql
to support ES|QL
queries
- [add] new repository branch
rails-7-0-stable
to support different rails versions
- [ref] minor code optimizations & documentation changes
[1.6.0] - 2023-08-11
- [add]
ElasticsearchRecord::Base#undelegate_id_attribute_with
method to support a temporary 'undelegation' (used to create a new record)
- [add]
ElasticsearchRecord::Relation#timeout
to directly provide the timeout-parameter to the query
- [add]
ElasticsearchRecord.error_on_transaction
-flag to throw transactional errors (default: false
) - this will now IGNORE all transactions
- [add]
ElasticsearchRecord::ModelApi
create!, clone!, rename!, backup!, restore! & reindex!-methods
- [add]
ElasticsearchRecord::Relation#pit_delete
which executes a delete query in a 'point_in_time' scope.
- [add]
ActiveRecord::ConnectionAdapters::Elasticsearch::TableStatements#backup_table
to create a backup (snapshot) of the entire table (index)
- [add]
ActiveRecord::ConnectionAdapters::Elasticsearch::TableStatements#restore_table
to restore a entire table (index)
- [add]
ActiveRecord::ConnectionAdapters::Elasticsearch::TableStatements#reindex_table
to copy documents from source to destination
- [ref]
ElasticsearchRecord::Base.delegate_id_attribute
now supports instance writer
- [ref]
ElasticsearchRecord::Relation#pit_results
adds ids_only
-parameter to now support a simple return of the records-ids...
- [fix] Relation
#last
-method will raise an transport exception if cluster setting 'indices.id_field_data.enabled' is disabled (now checks for access_id_fielddata?
)
- [fix] ElasticsearchRecord-connection settings does not support
username
key
- [fix] ElasticsearchRecord-connection settings does not support
port
key
- [fix]
_id
-Attribute is erroneously defined as 'virtual' attribute - but is required for insert statements.
- [fix] unsupported SAVEPOINT transactions throws exceptions (especially in tests)
- [fix]
ElasticsearchRecord::ModelApi#bulk
does not recognize '_id' / :_id
attribute
- [fix]
ElasticsearchRecord::ModelApi#bulk
does not correctly build the data-hash for update
-operation (missing 'doc'-node)
- [ref] simplify
ElasticsearchRecord::Base#searchable_column_names
- [fix] creating a new record does not recognize a manually provided
_id
-attribute
- [fix] creating a new record with active
delegate_id_attribute
-flag does not update the records _id
.
[1.5.3] - 2023-07-14
- [fix]
ElasticsearchRecord::Relation#where!
on nested, provided :none
key
- [ref] minor code tweaks and comment updates
[1.5.2] - 2023-07-12
- [fix]
ElasticsearchRecord::Relation#limit
setter method limit_value=
to work with delegate_query_nil_limit?
[1.5.1] - 2023-07-11
- [fix]
ElasticsearchRecord::ModelApi
'drop!' & 'truncate!' methods to support correct parameter 'confirm'
- [ref] improved yard documentation
[1.5.0] - 2023-07-10
- [add] additional
ElasticsearchRecord::ModelApi
methods drop! & truncate!, which have to be called with a confirm:true
parameter
- [add]
ElasticsearchRecord::Base.delegate_query_nil_limit
to automatically delegate a relations limit(nil)
-call to the max_result_window (set to 10.000 as default)
- [add]
ActiveRecord::ConnectionAdapters::Elasticsearch::SchemaStatements#access_shard_doc?
which checks, if the PIT-shard_doc order is available
- [add] support for _shard_doc as a default order for
ElasticsearchRecord::Relation#pit_results
- [ref]
ElasticsearchRecord::Base.relay_id_attribute
to a more coherent name: delegate_id_attribute
- [ref]
ElasticsearchRecord::Relation#ordered_relation
to optimize already ordered relations
- [ref] gemspecs to support different versions of Elasticsearch
- [ref] improved README
- [fix]
ElasticsearchRecord::Relation#pit_results
infinite loop (caused by missing order)
- [fix]
ElasticsearchRecord::Relation#pit_results
results generation without 'uniq' check of the array
[1.4.0] - 2023-01-27
- [add]
ElasticsearchRecord::ModelApi
for fast & easy access the elasticsearch index - callable through .api
(e.g. ElasticUser.api.mappings)
- [ref]
ElasticsearchRecord::Instrumentation::LogSubscriber
to truncate the query-string (default: 1000)
- [ref]
ActiveRecord::ConnectionAdapters::ElasticsearchAdapter#log
with extra attribute (log: true) to prevent logging (e.g. on custom api calls)
- [fix]
ElasticsearchRecord::Result#bucket
to prevent resolving additional meta key (key_as_string)
[1.3.1] - 2023-01-18
- [fix]
#none!
method to correctly invalidate the query (String(s) in where-queries like '1=0' will raise now)
- [fix] missing 'ChangeSettingDefinition' & 'RemoveSettingDefinition' @
ActiveRecord::ConnectionAdapters::Elasticsearch::UpdateTableDefinition::COMPOSITE_DEFINITIONS
to composite in a single query
- [fix]
#unblock_table
-method in 'connection' to now remove blocks instead of setting to 'false'
[1.3.0] - 2023-01-17
- [add] 'metas: {}' param for
CreateTableDefinition
to provide individual meta information without providing them through 'mappings'
- [add] 'change_'- & 'remove_'-methods for mapping, setting & alias for
CreateTableDefinition
- [add]
ActiveRecord::ConnectionAdapters::Elasticsearch::TableMappingDefinition#meta
for easier access
- [add]
UpdateTableDefinition#remove_mapping
to always raise an ArgumentError (now created @ CreateTableDefinition
through change_table(x, recreate: true) )
- [add]
_env_table_name
-syntax to ActiveRecord::ConnectionAdapters::Elasticsearch::SchemaDumper#table
for prefixed & suffixed tables in connections
- [add]
#cluster_health
, #refresh_table
, #refresh_tables
& #rename_table
methods to 'connection'
- [add]
#change_table
'recreate: false' parameter to switch between a 'change' or 'recreate' of an index
- [add]
#refresh
method to relations to explicit set the refresh value of the generated query
- [ref]
CloneTableDefinition
to adapt settings (number_of_shards & number_of_replicas) from source table by default
- [ref]
CreateTableDefinition#transform_mappings!
also support simple 'key->attributes' assignment of custom provided mappings
- [ref] 'delete_'-methods into more common 'remove_' for
UpdateTableDefinition
- [ref]
UpdateTableDefinition#change_mapping
to always raise an ArgumentError (now moved to CreateTableDefinition
through change_table(x, recreate: true) )
- [ref]
#change_table
missing '&block'
- [ref] 'delete_'-methods into more common 'remove_' to 'connection'
- [ref] ':__claim__'-operator to ':__query__' within
Arel::Collectors::ElasticsearchQuery
- [ref] update & delete queries to preset a 'refresh: true' as default (can be overwritten through 'relation.refresh(false)' )
- [rem]
#clone_table
unusable '&block'
- [rem]
#compute_table_name
-method - must be explicit provided with #_env_table_name(name)
- [fix]
#where!
& #build_where_clause
methods to also build a valid 'where_clause' in nested 'where' & 'or'
[1.2.4] - 2022-12-15
- [fix] missing
#visit_Arel_Nodes_In
method in Arel::Visitors::ElasticsearchQuery
to build array conditions
- [fix] resolving buckets from relation
ElasticsearchRecord::Result#buckets
not recognizing sub-buckets
[1.2.3] - 2022-12-12
- [fix]
change_table
'if_exists: true' returns at the wrong state
[1.2.2] - 2022-12-12
- [add]
:if_exists
option for change_table
- [fix] executing
_compute_table_name
irregular on some schema methods and some not - not only executes on create_table
and change_table
- [ref] private
_compute_table_name
method to public compute_table_name
- [ref] drop
_compute_table_name
on methods: open_table, close_table, truncate_table, drop_table, block_table, unblock_table & clone_table
[1.2.1] - 2022-12-12
- [add]
ActiveRecord::ConnectionAdapters::Elasticsearch::SchemaStatements#access_id_fielddata?
which checks the clusters setting 'indices.id_field_data.enabled' to determinate if a general sorting on the +_id+-field is possible or not.
- [add]
ElasticsearchRecord::Relation#ordered_relation
which overwrites the original method to check against the #access_id_fielddata?
method
- [fix] default order by '_id' causes an exception if clusters 'indices.id_field_data.enabled' is disabled
- [fix] subfield where-condition
where('field.subfield', 'value')
was transformed into a nested 'join-table' hash
- [fix] yardoc docs & generation
[1.2.0] - 2022-12-02
- [add]
ElasticsearchRecord::SchemaMigration
to fix connection-related differences (like table_name_prefix, table_name_suffix)
- [add] connection (config-related) 'table_name_prefix' & 'table_name_suffix' - now will be forwarded to all related models & schema-tables
- [add]
#block_table
, #unblock_table
, #clone_table
, #table_metas
, #meta_exists?
, #change_meta
, #delete_meta
methods for Elasticsearch ConnectionAdapter
- [add]
ElasticsearchRecord::Base.auto_increment?
- [add] index 'meta' method to access the
_meta
mapping
- [add]
.ElasticsearchRecord::Base.relay_id_attribute
to relay a possible existing 'id'-attribute
- [add] new enabled attribute
enabled
- which defines 'searchable attributes & fields' and gets also read from the index-mappings
- [ref] insert a new record with primary_key & auto_increment through a wrapper
_insert_with_auto_increment
- [ref] resolve
primary_keys
now from the index _meta
mapping first (old mapping-related 'meta.primary_key:"true"' is still supported)
- [ref] disable 'strict' mode (= validation) of settings, alias, mappings as default (this can be still used with
strict: true
)
- [ref] silent unsupported methods 'create/drop' for
ElasticsearchRecord::Tasks::ElasticsearchDatabaseTasks
- [ref] primary_key & auto_increment handling of custom defined mappings - now uses the index
_meta
mapping
- [fix] creating a record with different 'primary_key' fails with removed value (value no longer gets dropped)
- [fix] some index-settings not being ignored through
#transform_settings!
- [fix]
ActiveRecord::ConnectionAdapters::Elasticsearch::SchemaDumper
dumping environment-related tables in the same database
- [fix]
ActiveRecord::ConnectionAdapters::Elasticsearch::TableMappingDefinition
fails with explicit assignable attributes (now uses ASSIGNABLE_ATTRIBUTES)
- [fix] tables with provided 'table_name_prefix' or 'table_name_suffix' not being ignored by the SchemaDumper
[1.1.0] - 2022-12-01
- [add] support for schema dumps & migrations for Elasticsearch
- [add]
buckets
query/relation result method to resolve the buckets as key->value hash from aggregations
- [add] support for third-party gems (e.g. elasticsearch-dsl)
- [add] custom primary_key support with 'auto_increment' adaption (beta)
- [ref] instrumentation of
LogSubscriber
coloring
- [ref] unsupported methods to show exception
- [ref] query/relation method
#msearch
to support options 'resolve', 'transpose' & 'keep_null_relation'
- [ref]
ActiveRecord::ConnectionAdapters::ElasticsearchAdapter#translate_exception
for better error handling
- [ref]
ActiveRecord::ConnectionAdapters::Elasticsearch::Column
for a much easier assignment
- [ref] gemspec, yardoc & docs
- [fix]
ActiveRecord::ConnectionAdapters::ElasticsearchAdapter::BASE_STRUCTURE
to force primary_key column '_id' as virtual
- [fix]
ElasticsearchRecord::Relation::QueryClauseTree
not correctly calculating & merging 'filters, musts, ... '
- [fix] failing query not really failing in nested queries (msearch)
- [fix] 'null_realation' being executed in msearch
- [fix] quoting of columns, attributes & values
- [fix] query/relation method
#count
not preventing 'null_relation?'
[1.0.2] - 2022-11-07
- [add]
ActiveRecord::ConnectionAdapters::ElasticsearchAdapter#migrations_paths
with 'db/migrate_elasticsearch'
- [fix] to prevent executing 'primary' migrations to elasticsearch (SchemaDumper may still throw error comments)
- [add] temporary workarounds for scheme & migrations until we support it (so bin/rails db:migrate - tasks will now run again)
[1.0.1] - 2022-10-19
- [add]
ActiveRecord::ConnectionAdapters::Elasticsearch::Type::Nested
class to cast nested values
- [add] properties to column definition (so they are also searchable by Relation conditions)
- [add] exception for Relation #pit_results if batch size is too large
- [add] a default #find_by_id-method to proved a 'fallback' functionality for the primary '_id' column
- [fix] nested properties are not cast for column-type "object"
- [fix]
ActiveRecord::ConnectionAdapters::Elasticsearch::SchemaStatements
fields and property detection
- [fix]
ElasticsearchRecord::StatementCache::PartialQuery
reference manipulation of cached hash (missing .deep_dup )
- [ref]
ActiveRecord::ConnectionAdapters::Elasticsearch::Type::Object
class to only cast object values
- [ref]
Arel::Visitors::Elasticsearch#visit_Sort
to detect a random sort with correct keyword: "__rand__"
[1.0.0] - 2022-10-18
- [add] patch for
ActiveRecord::Relation::Merger
- to support AR-relations
- [add]
ElasticsearchRecord::Relation#pit_results
offset & yield support
- [add] individual instrumentation names for
ElasticsearchRecord::Relation
result methods (like: #aggregations)
- [rem] cleanup Debugging & logging
- [fix] quoting for any values
- [fix] calculation
count
method to support already known syntax (with column, distinct, limited, ...)
- [fix]
Arel::Nodes
to support additional args (query, kind, aggs, ...)
- [fix] relation manager patch to not mash up different relations
- [fix]
ElasticsearchRecord
total calculation for failed queries
- [fix]
ElasticsearchRecord::Relation#count
to correctly unscope
- [fix]
Arel::Visitors::Elasticsearch
- build query where-clauses without existing default query-"kind"
- directly fail if a grouping (visit_Arel_Nodes_Grouping) was provided
- forced failed! state was not correctly claimed
- buggy assign-method for nested arrays
- [fix]
Arel::Collectors::ElasticsearchQuery
- claim for argument
- delete key on nil assign
- [ref] simplify
Arel::Collectors::ElasticsearchQuery
(remove stack & scoping)
- [ref] simplify
Arel::Visitors::Elasticsearch
to support binds (statement cache) and simple where predicates
- [ref] rename
ElasticsearchRecord::Query#arguments
-> #query_arguments
[0.1.2] - 2022-09-23
- [fix] Records / Elasticsearch index with additional 'id' fields not recognizing
- [rem] unnecessary & overcomplicated .index_name_delimiter class attribute
[0.1.1] - 2022-09-22
- [add] msearch for klass & relation
- [fix] Gemfile (remove duplicated requirements)
- [fix] gemspec (dependencies & descriptions)
- [fix] loading requirements, remove unused code
- [fix] quoting
- [fix] arel collector
- [fix] arel visitor sort & assignment
- [ref] results builder for multiple responses
- [ref] log_subscriber to hide index but show 'query time'
- [ref] model_schema attributes
[0.1.0] - 2022-09-21
- Initial commit
- docs, version, structure