GitLab集成Elasticsearch时create_empty_index任务执行失败求助
解决GitLab Elasticsearch索引创建时的"Failed to parse value [1] as only [true] or [false] are allowed"错误
这个错误的核心原因很明确:GitLab的Elasticsearch配置里有个布尔类型的参数被设成了数字1,但Elasticsearch的API只接受true或false作为布尔值输入,导致索引创建请求被直接拒绝。
下面是具体的解决步骤:
- 首先定位你的GitLab配置文件:
- 如果你用的是Omnibus包安装的GitLab,配置文件路径是
/etc/gitlab/gitlab.rb - 若是源码编译安装的GitLab,配置文件在
config/gitlab.yml
- 如果你用的是Omnibus包安装的GitLab,配置文件路径是
- 打开配置文件,搜索所有以
elasticsearch_开头的配置项,重点检查那些控制功能开关的参数,比如:elasticsearch_indexingelasticsearch_enable- 其他类似的布尔型开关参数
- 把所有设置为
1或0的参数改成true或false,比如将elasticsearch_indexing = 1修改为elasticsearch_indexing = true - 重新应用配置:
- Omnibus安装执行命令:
sudo gitlab-ctl reconfigure - 源码安装的话直接重启GitLab服务即可
- Omnibus安装执行命令:
- 最后再次尝试执行创建索引的命令:
gitlab-rake gitlab:elastic:create_empty_index --trace
补充说明
GitLab在向Elasticsearch发送索引创建请求时,会直接把配置里的参数值传递给Elasticsearch API。而Elasticsearch对布尔类型参数的校验非常严格,只认字符串形式的true/false,不接受数字1/0作为布尔值的替代,这就是为什么会抛出这个400错误的根本原因。
内容的提问来源于stack exchange,提问作者waka
相关产品推荐
相关产品推荐

