Prerequisites and installation scenarios

This section describes the perquisites and installation scenarios for the Helix Core Search API, Helix Core Server, and Elasticsearch. The Helix Search service can be deployed in a variety of ways depending on the customers use-case.

Prerequisites

Helix Search requires the following:

  • Elasticsearch
  • Helix Core Server 2020.1 or later (Extensions are only supported by Helix Server 2021.2 or later)
  • Tip

    The Elasticsearch and Helix Server services can be deployed on the same instance or different instances, but all of the instances must be reachable over the network.

Helix Search service installation requirements

  • Windows hosts: Windows 10, Windows 2016 server, Windows 2019 server, or Windows 2022 server
  • Linux hosts: Ubuntu 20.04, 22.04 and RHEL 7, 8, 9
  • SSL, optional: if you want to use SSL for the Helix Search service, create a Java keystore. For instructions on creating a Java keystore, see Configure SSL security for Helix Search.

Helix Server installation requirements

  • Helix Server 2020.1 or later (Extensions are only supported by Helix Server 2021.2 or later)
  • SSL or non SSL modes supported
  • Unicode and non-unicode modes supported
  • Connection to a Replica or Edge Helix Server recommended for larger sites
  • Connection to a Helix Server Proxy is not supported

External services

  • Perforce Service User:A Standard or Service user with a minimum of admin access. Used to authorize the proxy connection at security level 5 and above. For instructions on creating the Perforce Service User and printing out the ticket, see Create the Perforce Service user .
  • Important
    • If a Service user is used, the long lived ticket must be a local ticket and not an all hosts ticket.

    • Security level 6 requires the Helix Server to have a valid server spec with the AllowedAddresses field set. For information about Security level 6, see Server security levels in the Helix Core Server Administrator Guide.

  • Optional:Perforce Index User:A Standard user with admin access. Used to read content from the Helix Server, to set file attributes, and to install extensions. For instructions on creating the Perforce Index User and printing out the ticket, see Create the index user (optional). If the index user is not defined, the Perforce Service user is used.
  • Optional:Anonymous Search User:An Anonymous user with read access in the Helix Server for the areas of the depot you want to allow search result access to. The anonymous search user is used for the unsupported search web pages. For instructions on setting the Anonymous User and printing out the ticket, see Create the anonymous search user (optional). If the anonymous user is not defined, anonymous access is disabled.

Elasticsearch installation requirements

  • Elasticsearch 7.14.x to 8.10.x

    Important

    Helix DAM may support different versions of Elasticsearch. For the Elasticsearch version that Helix DAM supports, see the Helix DAM Administrator Guide.

    Tip

    Ensure that Elasticsearch is pinned and not upgraded. To pin an Elasticsearch version, follow the instructions for your OS distribution:

  • List of host addresses for Elasticsearch nodes you want to use for Helix Search

  • Login credentials optional, but recommended

For instructions on installing the Helix Plugin Filter, see Install the Helix Plugin Filter.

Tip

Here are a few tips that are helpful when setting up an Elasticsearch host for Helix Search:

  • By default Elasticsearch is only accessible on localhost.

    Set network.host to a different address in elasticsearch.yml to expose a specific node on the network as follows:

    network.host: 10.1.2.3

    where, network.host is the IP address of the Elasticsearch server.

  • By default Elasticsearch listens for HTTP traffic on the first free port it finds starting at 9200.

    Set http.port to a specific HTTP port as per your requirement as follows:

    http.port: 9200

    where, http.port is the port number of the Elasticsearch host.

    For more information, see network module documentation on https://www.elastic.co/guide/index.html.

  • To perform discovery when a node is started, pass an initial list of hosts.

    For example:

    discovery.seed_hosts: ["host1"]

    The default list of hosts is ["127.0.0.1", "[::1]"]

  • To bootstrap the cluster using an initial set of master-eligible nodes.

    For example:

    cluster.initial_master_nodes: ["node-1"]

    For more information, see the discovery and cluster formation module documentation on https://www.elastic.co/guide/index.html.

For more information about configuring Elasticsearch and location of the config directory, see https://www.elastic.co/guide/en/elasticsearch/reference/8.10/settings.html.

Helix package requirements

For Install the Helix Plugin Filter from a Linux package and Install Helix Search on Linux, you must do the following:

  1. Import the Perforce package signing key, on the server hosting HelixPlugin Filter or Helix Search.

    Follow the instructions for your OS distribution:

    For information about how to verify the authenticity of the signing key, see: https://www.perforce.com/perforce-packages

  2. Configure the Perforce package repository on the server hosting Helix Plugin Filter or Helix Search.

    As root, follow the instructions for your OS distribution:

Installation scenarios

The following section addresses deployment of the Helix Search service based on the following scenarios:

  • Small site deployment of <100 users: Helix Server, Elasticsearch, and Helix Search are all deployed on separate instances and a single Elasticsearch index is used, see Small site deployment
  • Large deployment: multiple Elasticsearch indexes are used by Helix Search services from a single Helix Server, see Large site deployment

Helix Search is a self contained Java based Jetty application designed and tested against AdoptOpenJDK Java 11. The Windows installers and Linux packages deploy their own Java runtime environment (OpenJDK 11) and wrap it as a service.

The Helix Search JAR is available separately from the Perforce website and can be deployed without the need for a service wrapper, see Manually deploy a JAR file.

Small site deployment

A small site deployment typically only requires a single Helix Search service indexing a single Helix Server and a single Elasticsearch index.

Large site deployment

For larger sites the Helix Server data may be too large for a single Elasticsearch index.

The data can be partitioned, with arbitrary depot paths such as by Swarm Project or by Stream, and indexed by different Helix Search instances.

Image of using separate Helix Search and Elasticsearch instances to index

For example:

Two Helix Search deployments using different configured index hosts, for example: projA.perforce.com:1601 and projB.perforce.com:1601

The Elasticsearch index for each Helix Server host MUST be different:

  • projA.perforce.com:1601
  • com.perforce.p4search.index.name=projA

  • projB.perforce.com:1601
  • com.perforce.p4search.index.name=projB

They can point to the same Elasticsearch server because Elasticsearch can scale by adding more Shards/Replicas.

Note

The Helix Server administrator will need to install two Lua Extensions to make sure that the indexing for both instances is kept up-to-date.

Related topics

To deploy and install Helix Search on Windows or Linux use the Helix Search installer (msi installer or deb/rpm package), see Deploy and install.