ElasticSearch 5.6 升级到 6.5 引发的问题

公司一直在用Amazon AWS的ElasticSearch service, 最近因为AWS提供从5.6到6.5的升级,就在上周日尝试着升级了一下。结果升级之后产生了一堆问题,一边在AWS support开ticket一边自己研究怎么修复。最终幸运的修复了一些,下面介绍一下问题和心得

1. ES 6.0之后不再支持string type:

这里的type指的是index和indice里面的属性type,我所用的之前是下面这样的格式

 "request" : {

            "type" : "string",

            "fields" : {

              "raw" : {

                "index" : "not_analyzed",

                "type" : "string"

              }

            }

          }

升级之后的现象是无法在ES cluster上创建当天的日志indice。后来发现是因为ES从6.0开始不再支持string。于是用Dev Tools将模板升级成下面的样子

 "request" : {

            "type" : "text",

            "fields" : {

              "raw" : {

                "type" : "keyword"

              }

            }

          }

之所以把"index" : "not_analyzed" 也去掉是因为ES6.5也不支持这种属性了……查了下资料好像只支持true和false。一开始type我改的是text,但是如果raw设置为text好像不能用来搜索。现在模板这样设置之后,我们的属性是只能用来进行模糊搜索的,就像下图一样,我用logtype来搜索会搜索出来很多不相干的结果

 

而如果用了logtype.raw就会精准匹配。我个人猜测这就是keyword的功效,不是很确定,本人也不是专门研究ES的,所以有错误欢迎指正 

 

修改了模板之后,就可以成功创建当天的log indice了,问题1成功解决

2. visualization和dashboard的修改

这个也是猜测的,升级之后我们保存的search、visualization还有dashboard几乎都失效了。当时只能说是崩溃,后来慢慢排查发现问题主要出在search上

visualization是基于search的,然后dashboard又是基于visualization的,所以修复了search就修复了一切

问题是每次进入都提示下图

Saved object is missing

Could not locate that index-pattern (id:****)

click here to re-create it 

这个问题其实以前从5.2升级到5.6的时候遇到过一次,当时的解决方案是把index删掉重新创建一个就恢复了

这次删了N次问题依旧

后来慢慢研究发现问题出在search的设置里

设置里有一条是"index": "logstash-*"

尝试了一下贴index的ID进去,问题顺利解决

怀疑是之前的版本可以用index的名字来链接search和index,6.5不支持这样了。当然更可能是底层有哪个API存了index的一些东西,但是因为我没找到,所以只能用这个笨方法来解决了

一键修复的话只需要导出所有的东西,然后find and replace

3 Kibana白屏

此问题至今无解,依旧在等AWS的回复,个人怀疑是升级过程中出现问题,在电话里我给他们的建议是尝试rollback然后重新升级一下试试

猜你喜欢

转载自www.cnblogs.com/ldgend/p/10953064.html
今日推荐