Events
17 Mar, 21 - 21 Mar, 10
Join the meetup series to build scalable AI solutions based on real-world use cases with fellow developers and experts.
Register nowThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Azure DevOps Server 2022 - Azure DevOps Server 2019
In this article, learn how to install, configure, and uninstall a secure search engine for Azure DevOps Server that runs on your own hardware. For more information, see the following articles:
Permissions: Member of the Project Collection Administrators group for the organization. Non-administrative users can also request to have the extension added to their PCA. For more information, see Install and configure Azure DevOps Server and Requirements and compatibility.
Search works on any physical server or virtual machine that runs Azure DevOps Server. You can set it up on the same server or a different one for Search. If you use the same server, consider the CPU usage.
Tip
We recommend that you configure Search on a separate server for production environments.
For acceptable performance in multi-user scenarios, consider the following recommendations:
Disk space requirement:
The amount of disk space used by Search depends mainly on the type and size of files indexed. For Code search, since many times repositories can be large and have different code files in version control, disk space requirement could be significant. Allocate up to 150% of the size of all the repositories to be indexed. From TFS 2018 Update 3 and onward, users can exclude folders from their repositories for index to optimize the disk space consumed by search.
Search has the following dependencies, which get installed automatically as part of the configuration:
Note
If the Search configuration wizard doesn't detect a working installation of a Java Runtime Environment (JRE), it provides an option to download and install the latest supported version. Internet connectivity is required to download. If the target server doesn't have Internet connectivity, you must download and install a JRE manually before attempting to install Search.
Versions of Search before Azure DevOps Server used the Oracle Server Java Runtime Environment. Azure DevOps Server uses Elasticsearch version 7.17.0, which has a bundled version of OpenJDK.
During installation, the wizard sets the JAVA_HOME environment variable to point to the JRE installation folder. The configuration wizard might not detect an existing JRE installation if it wasn't correctly configured, or if the JAVA_HOME setting points to an earlier version than required by Search.
Note
We don't advise installing Elasticsearch on a machine where resources are shared, especially on a large enterprise environment with multiple application tiers. We recommend that you set up Elasticsearch in a separate dedicated machine. In that way, the JAVA environment isn't shared across machines for other purposes.
If there's a version of a JRE earlier than the minimum required by Search, and the JAVA_HOME variable was set to that version, we recommend that you install Search on a separate server.
If there's a version of Server JRE equal to or later than the minimum required by Search and not recognized by the configuration wizard, ensure JAVA_HOME variable is NOT set. Then, rerun the configuration wizard (& "C:\Program Files\Azure DevOps Server XXX\Search\ES\vX.XX\bin\elasticsearch-service.bat" manager
) and select the version by setting the path for the Java Virtual Machine.
If you can't install the version of Java required by Search because of other dependencies, you can do the following tasks:
Note
If you're using Oracle Server JRE 8, which was the default for Search in TFS (Azure DevOps Server doesn't use Oracle Server JRE 8), be aware of the following information:
Search in Azure DevOps Server supports both, the Microsoft Build of OpenJDK, and Oracle JRE, which let you choose between them based on your needs.
To change to the Microsoft Build of OpenJDK, ensure JAVA_HOME variable is NOT set. Then, rerun the configuration wizard (& "C:\Program Files\Azure DevOps Server XXX\Search\ES\vX.XX\bin\elasticsearch-service.bat" manager
) and select the version by setting the path for the Java Virtual Machine.
http://{server}/_gallery
) as an administrator. Non-administrative users can also request the extension for Azure DevOps Server. For more information, see Install an extension.Configure the Search service using the dedicated pages in the Server Configuration Wizard as you install Azure DevOps Server. You can also unconfigure Search afterwards by running the Server Configuration Wizard again or by launching the Search Configuration Wizard.
Consider the following information when you configure Search:
http://{Server}/_gallery
) from your Azure DevOps Server portal page. For more information, see Install an extension.To install or update Search on a separate or remote server, typically when there are more than 250 users, do the following steps:
The Search service uses a modified version of Elasticsearch. The terms "Search" and "Elasticsearch" are used interchangeably for the rest of this section. Administrators must provide credentials whether the Search service is on the same machine as Azure DevOps Server, or on a separate machine. This action is part of configuring the Search feature through the server or the Search configuration wizard. These credentials are new and aren't related to any preexisting account or server credentials. They're used to set up and connect to Search service. These new sets of credentials enable basic authentication in the search service.
For an upgrade from TFS 2018 Update 1.1 to TFS 2018 Update 3 or for search reconfiguration, only the user information automatically populates and administrators must provide credentials. Administrators can provide different credentials if they wish. If the Search service is on the same machine as Azure DevOps Server, administrators can provide a new set of credentials in the Configuration Wizard to set up the Search service, if wanted. However, if the Search service is on a remote machine, administrators must first provide the new credentials to the Search service setup script.
Note
Consider the following techniques for using IPSec to secure Elasticsearch on a Windows server:
Configure security with authentication only:
Configure security with authentication, integrity protection, and encryption:
TFS 2018 Update 2: Includes updated Search components and Wiki Search.
In both cases, all existing content (code files and work items) gets automatically reindexed to support the updated components after configuration. Depending on the volume of content, this upgrade might take some time to complete.
TFS 2018 Update 1.1 and TFS 2018 Update 3: Includes basic authentication for the communication between the TFS and Search service to make it more secure. Any installation or upgrade to TFS 2018 Update 1.1 or TFS 2018 Update 3, must provide credentials as part of configuring Search feature, through Server or the Search configuration wizard.
TFS 2018 Update 2 (or higher) to version Azure DevOps Server 2019 Update 1: When search is configured on a separate server, require a reinstallation of search. While following the instructions for an upgrade, in step 4 instead of updating Configure-TFSSearch.ps1 – Operation update
, run the following command to reinstall search.
Configure-TFSSearch.ps1 -Operation remove
Configure-TFSSearch.ps1 -Operation install -TFSSearchInstallPath <install location> -TFSSearchIndexPath $env:SEARCH_ES_INDEX_PATH
For a preproduction upgrade, production upgrade, new hardware migration, cloning, or other maintenance operation, the Server Configuration Wizard unconfigures Search. But, it's easy to reconfigure after the server maintenance operation is complete.
There might be cases where you no longer want to use Search or you want to do a new and clean install. This operation requires multiple steps, depending on whether Search is configured on the same server as Azure DevOps Server, or on a separate server.
Uninstall the Search extension for each collection. Go to the Manage Extensions page of each collection in your Azure DevOps Server instance:
Remove the Search feature:
Remove the Elasticsearch service:
cd "C:\Program Files\Microsoft Team Foundation Server 15.0\Search\ES\elasticsearch-5.4.1\bin"
."elasticsearch-service.bat remove"
.Remove Search data:
SEARCH_ES_INDEX_PATH
.Delete the environment variable, "SEARCH_ES_INDEX_PATH"
.
Do the following steps to unconfigure Search, like for Code, Work item, or Wiki, for each collection.
Go to the Manage Extensions page for each collection in your Azure DevOps Server instance.
Remove the Search feature:
Remove the Elasticsearch service and data.
"ConfigureTFSSearch.ps1 -remove".
Search for Azure DevOps Server has the following limitation:
Events
17 Mar, 21 - 21 Mar, 10
Join the meetup series to build scalable AI solutions based on real-world use cases with fellow developers and experts.
Register nowTraining
Learning path
Microsoft Search fundamentals - Training
Learn about Microsoft Search including where users can search, the answers and results they'll see, and how you can tailor the search experience for your organization.
Certification
Microsoft Certified: Azure AI Engineer Associate - Certifications
Design and implement an Azure AI solution using Azure AI services, Azure AI Search, and Azure Open AI.
Documentation
Azure DevOps Server Download - Azure DevOps Server & TFS
Azure DevOps Server Download
Setup & upgrade requirements - Azure DevOps Server
Learn about hardware, operating systems, SQL Server requirements to install Azure DevOps Server.
Manage Search, indexing - Azure DevOps
Get instructions for how to check, pause, resume, and reindex a repository or collection.