索引服务不可用问题解决方案

4
分享 2019-06-24
       在今年3月份Esri发布了10.7版本的ArcGIS Enterprise产品,部分用户反馈,在使用ArcGIS Enterprise一段时间后门户中无法再添加项目或者删除已有项目,错误信息为:索引服务不可用,如下图所示。这篇文章介绍一下这个问题的原因和解决方案。

2019-05-29_1352_副本.png

 
       引起这个问题的原因是索引库所在的机器磁盘空间过小(备注:在Portal for ArcGIS安装时会让用户指定Portal for ArcGIS目录的位置,默认位置是C:\arcgisportal,这个本地目录中存放了索引库,以及内容,日志和临时文件等)。Portal for ArcGIS内置了Elasticsearch数据库用于检索服务。Elasticsearch本身有一个规则是:当其所在的磁盘可用空间小于5%时,Elasticsearch的模式会由读写变为只读。一旦Elasticsearch的模式变为只读,即使再将磁盘可用空间增大,Elasticsearch也不会再自动切换回读写模式。Portal for ArcGIS 10.7版本对内置的Elasticsearch数据库这一默认规则没有进行更改,当磁盘可用空间小于5%后,Elasticsearch的模式变为只读,导致后续无法添加或者删除项目。这个问题只存在10.7版本中,在10.7之前的版本以及今年6月份发布的10.7.1版本中,Esri对Portal内置的Elasticsearch数据库的这一默认规则都进行了修改,不会出现这个问题。
 
       当这个问题发生后,可以通过连接Portal内置的Elasticsearch数据库更改其模式来解决,但是步骤繁杂,令人望而生畏。好在Portal的安装目录下还备有一个空的索引库,基于这个这个空的索引库,我们可以通过替换文件的方式来解决这个问题,步骤如下:
 
  1. 停止Portal for ArcGIS系统服务;
  2. 在Portal安装目录(...\Program Files\ArcGIS\Portal\framework\template)下找到empty_index.zip文件,将其解压缩。解压缩后的empty_index目录中包含了三个文件夹;
  3. 浏览至 C:\arcgisportal\index\nodes\0\indices目录,这个目录中包含了多个文件夹,其中有三个文件夹的名称和empty_index目录中的三个文件夹名称相同。将C:\arcgisportal\index\nodes\0\indices目录中同名的这三个文件夹删除,或者创建一个新的目录然后将三个同名文件夹移动至新的目录中;
  4. 将empty_index目录中的三个文件夹拷贝至C:\arcgisportal\index\nodes\0\indices目录中;
  5. 启动Portal for ArcGIS系统服务;
  6. 重建索引(在浏览器中打开portaladmin页面,URL格式如下所示,进入System > Indexer,单击 Reindex,Mode选择Full,单击 Reindex开始重建索引);

https://<machine>.<domain>:7443/arcgis/portaladmin/

       作为一个通用的解决方案,对其他原因引起的索引服务不能使用的问题,这个方案也具有一定的适用性。

1 个评论

分享一个我使用上述方法可以解决的问题场景:
版本:arcgis enterprise 10.7
以下两个问题同时出现:
问题1.在“我的内容”中上传Zip包,报错:
com.esri.gw.GWException: Error: 索引服务不可用。 请检查索引服务。 at com.esri.gw.index.elasticsearch.portal.ElasticSearchClient.updateDocument(ElasticSearchClient.java:545) at com.esri.gw.index.service.IndexServiceDispatcher.updateDocument(IndexServiceDispatcher.java:106) at com.esri.gw.search.GwRemoteIndexProxy.index(GwRemoteIndexProxy.java:45) at com.esri.gw.search.GWSearch.addItem(GWSearch.java:169) at com.esri.gw.search.GWSearch.addItem(GWSearch.java:152) at com.esri.gw.content.GWContent.addItem(GWContent.java:936) at com.esri.gw.content.GWContent$1a.run(GWContent$1a.java:848) at java.base/java.lang.Thread.run(Unknown Source)
问题2:在arcmap中发布服务成功,但是发布到server中的服务不能被同步到portal中。

要回复文章请先登录注册