Contents
Elasticsearch
Interaction Recording Web Services (RWS) uses Elasticsearch — an open-source, full-text search engine with a RESTful web interface — to store historical statistics as time-based events.
For new deployments, Genesys recommends that you set up a cluster of Elasticsearch nodes that is separate from your Interaction Recording Web Services nodes. See Configuring Interaction Recording Web Services to Use a Standalone Elasticsearch Cluster for details. It's possible to set up an embedded Elasticsearch cluster, which means that Elasticsearch is included in your Interaction Recording Web Services nodes. See Configuring Interaction Recording Web Services to Use an Embedded Elasticsearch Cluster for details.
Configuring Interaction Recording Web Services to Use a Standalone Elasticsearch Cluster
You can configure Interaction Recording Web Services to work with a standalone Elasticsearch cluster by completing the steps below.
Prerequisites
Verify that a cluster of Elasticsearch nodes have been deployed and configured. Refer to the Elasticsearch documentation for details.
Complete the following steps for each Interaction Recording Web Services node
- Copy the sample elasticsearch.yml file from the installation_CD/elasticsearch/templates/ folder, to the Elasticsearch configuration folder on a standalone machine. Perform this step for each node in your Elasticsearch cluster.
- Open the elasticsearch.yml configuration file in a text editor and verify that the following lines are included in the file:
index.analysis.analyzer.whitespace_lowercase.tokenizer: whitespace index.analysis.analyzer.whitespace_lowercase.filter: lowercase threadpool.index.queue_size: -1 threadpool.bulk.queue_size: -1 path.conf: <Elasticsearch installation path> path.data: <Elasticsearch installation path>/esdata transport.tcp.port: 9200 http.port: 9300 discovery.zen.ping.multicast.enabled: false discovery.zen.ping.unicast.hosts: <comma separated list of ElasticSearch nodes> discovery.zen.minimum_master_nodes: 2 gateway.recover_after_nodes: 2 gateway.recover_after_time: 1m gateway.expected_nodes: 3
- In the installation_CD/elasticsearch/ directory there is a templates folder. Copy the templates folder and its .json file contents to the config folder of Elasticsearch in each node in your Elasticsearch cluster. If you use the .rpm for Elasticsearch, this would be /etc/elasticsearch/ as the config folder. If you use the gzipped tarball, this would be under the $installDir/config.
- Set the crClusterName option to the name of the cluster. All Interaction Recording Web Services nodes with the same cluster name will form the cluster.
- Set the enableElasticSearchIndexing option to true. Note: In this case, Interaction Recording Web Services writes statistics values to both Elasticsearch and Cassandra, but only reads them from Elasticsearch.
- Set the elasticSearchSettings option to appropriate values for your environment.
JAVA_OPTIONS="-XX:MaxMetaspaceSize=512m -Djsse.enableSNIExtension=false"
Configuring Interaction Recording Web Services to Use an Embedded Elasticsearch Cluster
You can configure Interaction Recording Web Services to work with an embedded Elasticsearch cluster by completing the steps below.
Complete the following steps for each Interaction Recording Web Services node that you want to host Elasticsearch
- Install Elasticsearch on each Interaction Recording Web Services node.
- Copy the sample elasticsearch.yml file from the installation_CD/elasticsearch/templates/ folder, to the Elasticsearch configuration folder on the Interaction Recording Web Services node. Perform this step for each node in your Elasticsearch cluster.
- Open the elasticsearch.yml configuration file in a text editor and verify that the following lines are included in the file:
Note: <Elasticsearch installation path> refers to the location on which Elasticsearch has been installed.
Do not forget to update <Elasticsearch installation path> to the appropriate value.
index.analysis.analyzer.whitespace_lowercase.tokenizer: whitespace index.analysis.analyzer.whitespace_lowercase.filter: lowercase threadpool.index.queue_size: -1 threadpool.bulk.queue_size: -1 path.conf: <Elasticsearch installation path> path.data: <Elasticsearch installation path>/esdata transport.tcp.port: 9200 http.port: 9300 discovery.zen.ping.multicast.enabled: false discovery.zen.ping.unicast.hosts: <comma separated list of ElasticSearch nodes> discovery.zen.minimum_master_nodes: 2 gateway.recover_after_nodes: 2 gateway.recover_after_time: 1m gateway.expected_nodes: 3
- In your new elasticsearch folder, add a new subfolder called templates. For example: ir-web-services/elasticsearch/templates
- Copy the templates folder and its .json file contents to the config folder of Elasticsearch in each node in your Elasticsearch cluster. If you use the .rpm for Elasticsearch, this would be /etc/elasticsearch/ as the config folder. If you use the gzipped tarball, this would be under the $installDir/config.
- Set the crClusterName option to the name of the cluster. All Interaction Recording Web Services nodes with the same cluster name will form the cluster.
- Set the enableElasticSearchIndexing option to true. Note: In this case, Interaction Recording Web Services writes statistics values to both Elasticsearch and Cassandra, but only reads them from Elasticsearch.
- Set the elasticSearchSettings option to appropriate values for your environment.
JAVA_OPTIONS="-XX:MaxMetaspaceSize=512m -Djsse.enableSNIExtension=false"
