Learn CBElasticsearch module config, environment variable support, and more.
Once you have installed the module, you may add a custom configuration, specific to your environment, by adding an cbElasticsearch configuration object to your moduleSettings inside your Coldbox.cfc configuration file.
By default the following are in place, without additional configuration:
moduleSettings = {
"cbElasticsearch" = {
//The native client Wirebox DSL for the transport client
client="HyperClient@cbelasticsearch",
// The default hosts - an array of host connections
// - REST-based clients (e.g. JEST): round robin connections will be used
// - Socket-based clients (e.g. Transport): cluster-aware routing used
versionTarget = getSystemSetting( "ELASTICSEARCH_VERSION", '' ),
hosts = [
//The default connection is made to http://127.0.0.1:9200
{
serverProtocol: getSystemSetting( "ELASTICSEARCH_PROTOCOL", "http" ),
serverName: getSystemSetting( "ELASTICSEARCH_HOST", "127.0.0.1" ),
serverPort: getSystemSetting( "ELASTICSEARCH_PORT", 9200 )
}
],
// The default credentials for access, if any - may also be overridden when searching index collections
defaultCredentials = {
"username" : getSystemSetting( "ELASTICSEARCH_USERNAME", "" ),
"password" : getSystemSetting( "ELASTICSEARCH_PASSWORD", "" )
},
// The default index
defaultIndex = getSystemSetting( "ELASTICSEARCH_INDEX", "cbElasticsearch" ),
// The default number of shards to use when creating an index
defaultIndexShards = getSystemSetting( "ELASTICSEARCH_SHARDS", 5 ),
// The default number of index replicas to create
defaultIndexReplicas = getSystemSetting( "ELASTICSEARCH_REPLICAS", 0 ),
// Whether to use separate threads for client transactions
multiThreaded = true,
// The maximum amount of time to wait until releasing a connection (in seconds)
maxConnectionIdleTime = 30,
// The maximum number of connections allowed per route ( e.g. search URI endpoint )
maxConnectionsPerRoute = 10,
// The maxium number of connections, in total for all Elasticsearch requests
maxConnections = getSystemSetting( "ELASTICSEARCH_MAX_CONNECTIONS", 100 ),
// Read timeout - the read timeout in milliseconds
readTimeout = getSystemSetting( "ELASTICSEARCH_READ_TIMEOUT", 3000 ),
// Connection timeout - timeout attempts to connect to elasticsearch after this timeout
connectionTimeout = getSystemSetting( "ELASTICSEARCH_CONNECT_TIMEOUT", 3000 )
}
};
At the current time only the REST-based [Hyper] native client is available. Support is in development for a socket based-client. For most applications, however the REST-based native client will be a good fit.
Elasticsearch v8 Note: Elasticsearch version greater than 8.0.0 have XPack security enabled by default. In order to disable security you must pass the xpack.security.enabled=false environment variable to the service, or add this configuration to your elasticsearch.yml file. Without security disabled, you will need to provide credentials.
Configuration via Environment Variables
Since the default settings will read from environment variables if they exist, we can easily configure cbElasticsearch from a .env file:
# .env# Configure elasticsearch connectionELASTICSEARCH_HOST=localhostELASTICSEARCH_PORT=9222ELASTICSEARCH_PASSWORD=B0xify_3v3ryth1ng# Configure data storage and retrievalELASTICSEARCH_INDEX=booksELASTICSEARCH_SHARDS=5ELASTICSEARCH_REPLICAS=0ELASTICSEARCH_MAX_CONNECTIONS=100ELASTICSEARCH_READ_TIMEOUT=3000ELASTICSEARCH_CONNECT_TIMEOUT=3000
You will need to read these settings into the coldfusion server upon server start via commandbox-dotenv or some other method.
For security reasons, make sure to add .env to your .gitignore file to avoid committing environment secrets to github/your git server.