All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
3.5.0 - 2024-12-13
- Add support for wildcard mapping fields
- Bump hyper version to v8.0.0
3.4.2 - 2024-11-10
- Add
onLogstashEntryCreate
interception point, to allow influencing and additions to final log object - Add
mode
argument to clientsaveAll
method to allow for acreate
mode to be used for data streams
3.4.1 - 2024-09-26
- Add optional
field
argument togetMappings
client method, which allows for wildcard search and filtering of mappings ( e.g.(GET) /logs-coldobx-*/_mapping/*application
)
3.4.0 - 2024-09-26
- Add component path analyzer to message and extra info fields so that parts of component paths are searchable
- Add
labels
property to Logstash Appender properties to allow for custom labels - Add
labels
convention to Logstash Appender UserInfo UDF to allow keyword label filtering - Add
AppenderService
object which allows for easier creation of detached appenders and index-specific logging - Improved error handling to include the status code in the error message if a "reason" could not be extracted from the response:
Elasticsearch server responded with [504 Gateway Timeout]. The response received was not JSON.
.
- Ensure data stream existence check returns data stream records
- Added
addRuntimeMapping()
method for mapping runtime fields at search time
- Improved error handling for rare cases where ElasticSearch exceptions are missing a
reason
key.
- Added
asyncTimeout
setting with default of 5000ms
- Fixed rollover size not being applied correctly on the ILM policy
- Added workaround for async manager usage in Linux environments
- Fixed Logstash appender error fallback Logbox reference
- Additional mapping enhancments for searchability
- Set default document bulk create to refresh only when requested
- Change explicit mapping of root message field to
text
to ensure search scoring ability
- Added
async
property to LogstashAppender - Added
indexTemplatePriority
property to logstash appender to prevent conflicts with multiple log streams sharing the same stream pattern
- Corrected incorrect timestamps on LogstashAppender logs
- Corrected a typing error when performing error handling in
deleteById()
- Added
getTermVectors
to SearchBuilder and Client to allow for fetching term vectors on document field(s)
- Added additional error handling and failover to Logstash appender to prevent ES communication from failing to bring an application online
- Added deprecated getters for
startRows
/maxRows
properties due to compat issues with existing apps
- Added support for scripted and runtime fields
- Added
getTermsEnum
to client to allow for fetching autocompletion terms and picklists - Added generic
set
method to SearchBuilder to allow for ad-hoc body parameters
- Fixed an issue with
filterRange
method to allow compatibility when used withfilterTerms
andfilterTerm
- Renamed
startRows
/maxRows
properties in search builder tofrom
/size
to better match ES query syntax. Adds customsetStartRows
andsetMaxRows
methods which pass through.
- Fixed regex used to detect Lucee HTML formatted error messages
- Added a convenience method in the Util to process incorrectly formatted (HTML) exception messages
- Added a
refreshIndex
method to the client to perform full refreshes of index data - Added
formatToPainless
utility script in the Util component to remove whitespace from painless scripts - Added
getIndexStats
method to client for more informational stats on indexes
- Fixed an error in LogstashAppender when attempting to migrate indices to from v2
- Added Data Streams Support
- Added ILM ( Index Lifecycle Management ) Policy Suport
- Added Component and Index Template Support
- Added Snapshot Repository support
- Added create() method to Document object to support non-upsert operations
- Added support for migrating cbElasticSearch LogstashAppender indices from v2 to v3( ECS )
- Added
throwOnError
property to logstash appender to allow transmission errors to ES to fail quietly
- Changed Logstash Appender to use time series Data Streams instead of static indices
- Changed Logstash Appender Configuruation for data stream support and index lifecycles
- Converts Logstash Appender to use Elastic Common Schema.
- Removed Support for Elasticsearch versions < 7.x
- Removed Suppport for Alternate ES Clients
- Removed ElasticsearchAppender object as it was redundant
- Removed support for Adobe Coldfusion 2016 (EOL)
- Issue #111 - Adds the ability to apply settings to an existing index
- Issue #106 - Adds the ability to specify case-insenstivity to wildcard searches ( default = false )
- Issue #105 -
getAliases
now supports multiple indexes with the same alias and returns the attributes to determine r/w capabilities
- Added
getSettings
method to retreive settings for a server or for an index - Added
getMappings
method to retreive mappings for an index
- Added support for Elasticsearch v8
- Added ACF201 tests to matrix
- Removed Java v8 testing from matrix as ES8 only runs on 11+
- Added wait for refresh to cache provider put/delete to ensure concurrency support
- Fixed an issue where documents were being sent to the rotational index without it being assured and mapped
- Fixed incorrect return types in LogstashAppender provider methods
- Added the ability to pass query params to the client
get
method - Additional documentation updates and examples
- Added
filterRange
method toSearchBuilder
- Added the ability to pass an index name to the
IndexBuilder
delete
method - Added additional error handling and parsing to tasks
- Fixes an issue with correctly passing key name to
SearchBuilder
sort
method
- Fixed an error with stack trace replacement in
LogstashAppender.cfc
- Changed Build Process to Use Github Actions
- Build update experimentation version - unreleased
- Added
cfmigrations
migration manager (models.migrations.Manager
)
- Fixed reserved word issues which would cause errors in Lucee
- Adds null checks for intermittent errors in Document.cfc when all args were not present
- Fixes an issue with logstash appender where the exception type was not converting correctly to JSON when provided as additional info
- CI/CD Process migrated from Travis CI to Github Actions
- Added
patch
method to client to allow for partial document updates - Added
deleteById
method to client to prevent overhead of Document-based deletions when identifier and index are known - Added the ability to pass request parameters to deletion methods
- Added a new
patch
method toIndexBuilder.cfc
which provides a more intuitive API for partial updates to indices and settings - Adds a new
processBulkOperation
method for performing bulk operations with multiple actions - Additional error handling for non-JSON responses from Elasticsearch servers
- Typos in documentation in docblocks
- Issue #76 - Fixes an incorrect error response typing
- Additional documentation updates
- Improve error response by passing all response errors through a single parsing method
- Add handling for root cause exceptions on shard failure ( Issue #65 )
- Issue #72 - Fixes a bug where the node pool was not using the full length of the pool
- Issue #74 - Fixes a regression in
filterTerms
query DSL generation
- Modifies LogstashAppender schema to match default 7.x logstash template and adds additional schema keys and hooks for Stachebox
- Adds the
collapseToFields
method to the search builder to support documents grouped on a specific field.
- Adds the ability to specify an operator to term queries via
filterTerm
andfilterTerms
and pass multiple values to filter
- Lowers the default number of Logstash shards on index to 2, to prevent inheritance of application shard settings
- Lowers the default number of Logstash replicas to 0, to prevent maximum shard errors
- Changes the default Logstahs index rotation frequency to weekly
- Fixes an error in the Logstash appender which could be thrown by a non-string value in the exception object
type
key
- Adds additional data and exception information in Logstash appender messages
- Adds Logstash appender and converts Elasticsearch appender to use Logstash schema for index data
- Adds a
wildcard
method to Search builder for wildcard searches on keyword-mapped fields
- Converts default native client to HyperClient ( native CFML implementation )
- Removes the
deleteMapping
method in the main client, as it is no longer supported in ES versions 6.5 and up. - Removes support for Adobe Coldfusion 11
- Removes support for Lucee 4.x
- Moves previous native JEST Client to
cbelasticsearch-jest
module. - Ends official support for 6.x versions of Elasticsearch
- Adds
cbElasticsearchPreSave
andcbElasticsearchPostSave
interceptions when saving individual or bulk documents - Adds the ability to create, update, read, and delete Elasticsearch pipelines
- Adds the ability to configure a pipeline for document processing ( e.g.
myDocument.setPipeline( 'my-pipeline' )
) - Adds the ability to add save query parameters when saving individual documents ( e.g.
myDocument.addParam( 'refresh', true )
) - Adds the ability to pass a struct of params to bulk save operations (e.g.
client.saveAll( documents, false, { "refresh" : true } )
)
- Fixes an issue where a null value would throw an error when creating a native Java HashMap
- Adds new search builder methods
suggestTerm
,suggestPhrase
, andsuggestCompletion
for auto-completion and auto-suggestion queries - Adds a throw on error argument, with a default of true, to client reindex() method when waiting for completion
- Fixes an issue where default shard/replica settings were being overwritten when passing a complete config
- Modifies search builder methods of
filterTerm
andfilterTerms
to return the builder instance ( Issue #43 ) - Modifies Document
setValue
method to return instance, for method chaining ( Issue #40 )
- Adds a Util component for common inbound and outbound conversions and casting
- Fixes an error when individual documents in a bulk save contained errors ( Issue #44 )
- Adds responses to task model
- Adds the ability to provide a transformation script to the client
reindex
method
- Adds the ability to pass URL parameters to SearchBuilder-aware client methods. Adds a
param( name, value )
supporting method to the SearchBuilder - Adds a new Task object which can be refreshed and used in a loop as long-running tasks complete in the background ( e.g.
while( !task.isComplete() )
) - ( Breaking ) Changes the return type of the
deleteByQuery
andupdateByQuery
to return the full API response which may be inspected or used to follow-up on tasks - implements a
getAllTasks()
method in the client, which will return an array of Task objects - implements a
getTask
method in the client to retreive tasks by identifier ( e.g. -[node]:[id]
). - implements a
getIndices
method in the client to retreive a map of indices with stats - implements a
getAliases
method in the client to retreive a map of aliases
- Resolves Issue #12 - slf4j missing on non-Runwar installations
- Resolves Issue #17 - implements workarounds and adds documentation on how to configure and use a connection to a secondary elasticsearch cluster
- Adds fallback attempt when connection pool is unexpectedly closed upstream
- Adds a soft fail to the version target check when a connection to the ES start page cannot be established
- Implements compatibility for Elasticsearch v7
- Adds environment variable detection for default configuration
- Implements a new AliasBuilder object, which can be used to alias indexes
- Implements a new
reindex()
method in the client which allows the ability to reindex - Implements new
mustExist
andmustNotExist
methods to the SearchBuilder
- Reverts to previous versions of HTTP client due to instability and connection expiration issues
- Adds connection cleanup prior to execution
- Updates Apache HTTP Client to v4.5.9
- Adds count() methods to the SearchBuilder and Client
- Implements url encoding for identifiers, to allow for spaces and special characters in identifiers
- Implements update by query API and interface
- Adds compatibility when Secure JSON prefix setting is enabled
- Updates Java Dependencies, including JEST client, to latest versions
- Implements search term highlighting capabilities
- Updates to
term
andfilterTerms
SearchBuilder methods to allow for more precise filtering
- Adds
filterTerm
method which allows restriction of the search context - Adds
type
andminimum_should_match
parameters tomultiMatch
method in SearchBuilder
- Updates to SearchBuilder to alow for more complex queries with fewer syntax errors
- Refactor filterTerms to allow other
should
orfilter
clauses
- Adds support for Elasticsearch v6.0+
- Adds a new MappingBuilder
- Add ability to specify
_source
excludes and includes in a query - ACF Compatibility Updates
- Adds
readTimeout
andconnectionTimeout
settings - Adds
defaultCredentials
setting - Adds default preflight of query to fix common assembly syntax issues
- Adds
filterTerms()
method to allow an array of term restrictions to the result set
- Adds support for terms filters in match()
- Fixes pagination and offset handling
- Initial Release