docker-elk/extensions/enterprise-search
Antoine Cotten 6704d9f1d7
Update to v8.0.0 (#544)
List of changes impacting docker-elk:

- [logstash]: The output to Elasticsearch is handled as a data stream.

  Starting with v8.0.0, the `elasticsearch` output for Logstash sends
  log data to a data stream instead of `logstash-*` indices by default.
  The name of the default data stream is `logs-generic-default`.
  docker-elk remains unopinionated and simply uses Elastic's defaults
  like it always has, so users who prefer to retain the old behaviour
  need to explicitly opt-out of data streams in their Logstash
  pipelines.

  Refs:
  - https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams.html
  - https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html#plugins-outputs-elasticsearch-data-streams

- [logstash]: The (legacy) monitoring data collection is now disabled.

  This feature was deprecated since v7.9.0, and removed in v8.0.0.

  Ref: https://www.elastic.co/guide/en/logstash/current/monitoring-internal-collection-legacy.html

- [kibana]: An index pattern for `logs-*` indices is automatically
  created.

  It used to be required to manually create an index pattern for indices
  managed by Logstash, even when using the default Logstash indices.
  This is no longer the case since the output data is now being handled
  as a data stream, and Kibana automatically creates index patterns for
  these.

- [elasticsearch]: The command line tool `elasticsearch-setup-passwords`
  was deprecated in favour of a new `elasticsearch-reset-password` tool.

  Passwords for built-in users must now be generated one by one.

  Ref: https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-passwords.html

- [enterprise-search]: Kibana is now the new management interface, and
  the only one available moving forward.

  The old standalone Enterprise Search interface was removed in v8.0.0.

  Ref: https://www.elastic.co/guide/en/enterprise-search/current/user-interfaces.html
2022-02-10 17:19:04 +01:00
..
config Update to v8.0.0 (#544) 2022-02-10 17:19:04 +01:00
Dockerfile Update to v7.7.1 2020-06-10 15:29:38 +02:00
README.md Update to v8.0.0 (#544) 2022-02-10 17:19:04 +01:00
enterprise-search-compose.yml Rename App Search to Enterprise Search 2020-06-10 15:39:44 +02:00

README.md

Enterprise Search extension

Elastic Enterprise Search is a suite of products for search applications backed by the Elastic Stack.

Requirements

  • 2 GB of free RAM, on top of the resources required by the other stack components and extensions.

Enterprise Search exposes the TCP port 3002 for its Web UI and API.

Usage

Generate an encryption key

Enterprise Search requires one or more encryption keys to be configured before the initial startup. Failing to do so prevents the server from starting.

Encryption keys can contain any series of characters. Elastic recommends using 256-bit keys for optimal security.

Those encryption keys must be added manually to the config/enterprise-search.yml file. By default, the list of encryption keys is empty and must be populated using one of the following formats:

secret_management.encryption_keys:
  - my_first_encryption_key
  - my_second_encryption_key
  - ...
secret_management.encryption_keys: [my_first_encryption_key, my_second_encryption_key, ...]

To generate a strong encryption key, for example using the AES-256 cipher, you can use the OpenSSL utility or any other online/offline tool of your choice:

$ openssl enc -aes-256 -P

enter aes-256-cbc encryption password: <a strong password>
Verifying - enter aes-256-cbc encryption password: <repeat your strong password>
...

key=<generated AES key>

Enable Elasticsearch's API key service

Enterprise Search requires Elasticsearch's built-in API key service to be enabled in order to start. Unless Elasticsearch is configured to enable TLS on the HTTP interface (disabled by default), this service is disabled by default.

To enable it, modify the Elasticsearch configuration file in elasticsearch/config/elasticsearch.yml and add the following setting:

xpack.security.authc.api_key.enabled: true

Configure the Enterprise Search host in Kibana

Kibana acts as the management interface to Enterprise Search.

To enable the management experience for Enterprise Search, modify the Kibana configuration file in kibana/config/kibana.yml and add the following setting:

enterpriseSearch.host: http://enterprise-search:3002

Start the server

To include Enterprise Search in the stack, run Docker Compose from the root of the repository with an additional command line argument referencing the enterprise-search-compose.yml file:

$ docker-compose -f docker-compose.yml -f extensions/enterprise-search/enterprise-search-compose.yml up

Allow a few minutes for the stack to start, then open your web browser at the address http://localhost:3002 to see the Enterprise Search home page.

Enterprise Search is configured on first boot with the following default credentials:

  • user: enterprise_search
  • password: changeme

Security

The Enterprise Search password is defined inside the Compose file via the ENT_SEARCH_DEFAULT_PASSWORD environment variable. We highly recommend choosing a more secure password than the default one for security reasons.

To do so, change the value ENT_SEARCH_DEFAULT_PASSWORD environment variable inside the Compose file before the first boot:

enterprise-search:

  environment:
    ENT_SEARCH_DEFAULT_PASSWORD: {{some strong password}}

⚠️ The default Enterprise Search password can only be set during the initial boot. Once the password is persisted in Elasticsearch, it can only be changed via the Elasticsearch API.

For more information, please refer to User Management and Security.

The Enterprise Search configuration is stored in config/enterprise-search.yml. You can modify this file using the Default Enterprise Search configuration as a reference.

You can also specify the options you want to override by setting environment variables inside the Compose file:

enterprise-search:

  environment:
    ent_search.auth.source: standard
    worker.threads: '6'

Any change to the Enterprise Search configuration requires a restart of the Enterprise Search container:

$ docker-compose -f docker-compose.yml -f extensions/enterprise-search/enterprise-search-compose.yml restart enterprise-search

Please refer to the following documentation page for more details about how to configure Enterprise Search inside a Docker container: Running Enterprise Search Using Docker.

See also

Enterprise Search documentation