升级到 TFS 2018 Update 2 后搜索失败

Per*_*lmi 2 tfs elasticsearch

将 TFS 服务器升级到 2018 Update 2 后,搜索和索引似乎在我们的一个环境中被破坏了。

任何搜索都会给出“我们在处理您的请求时遇到意外错误”,我已经完成了所有故障排除文档以清理和重新索引所有集合。还将搜索包完全重新安装到我们为搜索和索引而运行的单独服务器上,以确保我们运行的是正确的版本。

在 TFS 应用服务器上的事件日志中记录了大量这些异常:

事件 (81277) 已完成,状态为 FailedAndRetry。事件 81277 已完成并显示消息“BeginBulkIndex-PushEventNotification:由于 Microsoft.VisualStudio.Services.Search.Common.FeederException 异常,操作未成功完成:Elasticsearch 拒绝了大量文件,导致此作业失败。” 失败原因:Microsoft.VisualStudio.Services.Search.Common.SearchPlatformException:ES 异常:[HTTP 状态代码:[200] BULK_API_ERROR:[索引返回 404 _index:codesearchshared_1_0 _type:SourceNoDedupeFileContractV3 _version:0 错误:类型:type_missing_exception 原因: [SourceNoDedupeFileContractV3] 缺失”

另一种异常类型也记录了很多次,表明无法索引工作项:

Microsoft.VisualStudio.Services.Search.Common.SearchPlatformException:ES 异常:[HTTP 状态代码:[200] BULK_API_ERROR:[ 更新返回 404 _index:workitemsearchshared_0_2 _type:workItemContract _version:0 错误:类型:type_missing_exception 原因:“type[workItemContract]丢失”更新返回 404 _index:workitemsearchshared_0_2 _type:workItemContract _version:0 错误:类型:type_missing_exception 原因:“type[workItemContract] 丢失”

异常似乎表明缺少某些类型注册,例如 workItemContract 和 SourceNoDedupeFileContractV3,但我在搜索服务器安装日志中找不到任何错误。

有人对如何解决这个问题并使 Elastic Search 恢复到工作状态有一些建议吗?

Per*_*lmi 5

我们通过完全卸载然后重新安装与搜索相关的所有内容来解决这种情况。

  1. 从网络管理中的扩展管理中卸载所有集合中的所有代码/工作/Wiki 扩展
  2. 从 TFS 管理控制台中删除了 TFS 搜索服务功能。
  3. 从单独的搜索服务器卸载 elasticsearch 服务,使用 PowerShell 脚本 .\Configure-TFSSearch.ps1 -operation remove
  4. 重启 TFS 作业代理服务

  5. 使用从所有集合数据库中删除旧的搜索相关数据库内容

    从 [搜索].[tbl_IndexingUnit] 中删除

    从 [搜索].[tbl_IndexingUnitChangeEvent] 删除

    从 [搜索].[tbl_IndexingUnitChangeEventArchive] 删除

    从[搜索]删除。[tbl_JobYield]

    从 [搜索].[tbl_TreeStore] 删除

    从 [搜索].[tbl_DisabledFiles] 中删除

    从 [搜索] 中删除。[tbl_ItemLevelFailures]

    从 [搜索].[tbl_ResourceLockTable] 删除

  6. 重启 TFS 作业代理服务

  7. 重新启动搜索服务器

  8. 使用现有搜索服务器从 TFS 管理控制台运行配置搜索功能向导

  9. 根据 PowerShell 脚本的说明安装搜索包

    .\Configure-TFSSearch.ps1 -Operation install -TFSSearchInstallPath D:\ES -TFSSearchIndexPath D:\ESDATA -Port 9200 -Verbose

  10. 从 TFS 管理控制台完成的搜索配置向导启用所有现有集合的代码搜索

  11. 检查服务是否正在运行并测试从 Web 应用程序搜索,它有效!