The P4 Search service is used by other Perforce products to enhance their search capabilities. For example, P4 Code Review and P4 DAM have REST APIs that connect to the P4 Search service. It indexes file content, metadata, revision details, and change descriptions in P4 Server. This helps users find assets and boosts productivity.
The P4 Search service is a wrapped JAR that runs as a Linux service. It uses two Java properties files (service.properties and default.config.properties) along with configuration data stored in P4 keys. The configuration files contain details and connection information for the P4 Server and Elasticsearch instances.
To learn more about P4 Search, see the P4 Search documentation: https://help.perforce.com/helix-core/integrations-plugins/p4search/current
P4 Search is officially supported by Perforce. Any issues should be submitted via Perforce's standard support process. See https://www.perforce.com/support/request-support
P4 Search is provided as a Docker image. To launch, run the following Docker commands on your host:
docker pull perforce/p4search:latest
1. mkdir -p volumes/p4search/etc_in
2. Create the default.config.properties and service properties configuration files in the etc_in folder.
3. Run
docker run -d \
--name p4search.helix \
-p 1601:1601 \
-v ./volumes/p4search/etc_in:/opt/perforce/helix-p4search/etc_in \
perforce/p4search:latest
4. After making changes to the default.config.properties or service.configuration files, please stop and remove the docker container and then restart the container for the changes to take effect as done by step 3.
com.perforce.p4search.service.tenant-id=default
# Perforce configuration
com.perforce.p4search.core.p4port=ssl:p4dssl.mydomain:1666
com.perforce.p4search.core.p4trust=***************************
com.perforce.p4search.core.allowed=
com.perforce.p4search.core.service.p4user=super
com.perforce.p4search.core.service.p4ticket=***************************
com.perforce.p4search.core.index.p4user=super
com.perforce.p4search.core.index.p4ticket=***************************
# Indexer configuration
com.perforce.p4search.index.name=perforce1
# ElasticSearch configuration
com.perforce.p4search.elastic.user=elastic
com.perforce.p4search.elastic.pass=*************
# P4Search configuration
com.perforce.p4search.service.version=2026.1.1234567
com.perforce.p4search.service.log=log4j2.xml
com.perforce.p4search.service.host=0.0.0.0
com.perforce.p4search.service.port=1601
com.perforce.p4search.service.protocol=http
com.perforce.p4search.service.keystore=
com.perforce.p4search.service.keypass=
com.perforce.p4search.service.truststore=
com.perforce.p4search.service.trustpass=
com.perforce.p4search.service.access-control-allow-origin=http://p4search.example.com:1601
com.perforce.p4search.service.token=00000000-0000-0000-0000-000000000000
com.perforce.p4search.service.help-url=https://help.perforce.com/helix-core/integrations-plugins/p4search/current/Content/P4Search/Home-p4search.html
com.perforce.p4search.service.external-url=http://p4search.example.com:1601
com.perforce.p4search.index.threads=8
com.perforce.p4search.service.startup-retry=30000
com.perforce.p4search.service.global-rate-limit=600
com.perforce.p4search.service.login-rate-limit=5
com.perforce.p4search.service.access-token-ttl=600
com.perforce.p4search.service.refresh-token-ttl=900
com.perforce.p4search.service.live-log-limit=300
com.perforce.p4search.elastic.hosts=https://elastic.example.com:9200
com.perforce.p4search.elastic.insecure=true
com.perforce.p4search.elastic.filter=true
com.perforce.p4search.index.journal-path=./jnl
com.perforce.p4search.index.journal-threshold=1000
Content type
Image
Digest
sha256:8b1f7b752…
Size
1.5 GB
Last updated
20 days ago
docker pull perforce/p4search