公司一直在用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 support的帮助几天无果后,我尝试自己修复了这个问题

首先diss一下AWS support的制度,我的帖子被一个同胞给pick了,然后大概是出于这种帖子看起来就比较麻烦,所以以至于这位同胞没在线的时候我通过电话或者online来排队一个小时也没人理我

 

描述一下问题,升级6.5之后,另一个cluster无法显示内容,点击discover之后白屏,无任何显示,然后进入Management里的Index Pattern,也是白屏,无任何显示

在苦等几天无果之后,今天早上自己尝试着处理了一下,发现遇到这个问题的真的很少,几乎搜不到同病相怜的朋友。

大部分的问题通过Chorme的debug然后进入Dev Tools大概就能解决掉

 

后来搜中文发现了一条情况很相似的帖子

https://elasticsearch.cn/question/1744

 

按照评论里的方法,把.kibana删掉,然后重新创建了一个(我不知道如果不备份会怎样,反正我是把原来的.kibana原封不动的贴回去了)

切记如果使用此方法一定要先在Saved Objects 里备份所有的东西!

我就是没备份,损失了一些search,visualization和dashboard

 

创建之后没有立刻生效,直到我用Dev Tools试了一下_search api

GET logstash-2019.05.31/_search

我也不知道是不是因为这个,反正我是这样之后Discover就可以进去了。。。

如果不是的话就当成是东方魔术好了……

 

至此,bug应该算是完美解决了

 

posted on 2019-05-31 02:37  地球防卫队  阅读(537)  评论(0)    收藏  举报