我的ElasticSearch認證工程師之路

1、引子

我是2020年4月30日通過的認證,應羣主之邀,寫一篇經驗分享,也是給我的認證之路做一個小結。其實和很多羣友想的不一樣,我平常在工作中要寫DSL的機會不多,和ES相關的,更多的是評估容量和成本,決定一個場景到底要不要用,要設計哪些功能。雖然平時零零碎碎地看了很多ES相關的知識,但總覺得不成體系,考慮問題的時候會發現有些內容自己是不知道的。因此想考一個Elastic認證,借這個機會全面地學習和了解ES的整個體系

我其實去年10月份就報名了。那會兒我是衝着當時可以補考一次的優惠去報的,後來發現補考一次的機會必須要發生在10月底之前,而我當時覺得自己並沒有準備好,因此放棄了那次機會。後來直到年底前,工作都比較忙,我差點以爲自己要放棄了。後來就到了春節期間,恰逢其時,新冠疫情爆發,在節後很長一段時間,我都是在家遠程辦公,在這個過程中,發現自己多了很多可以支配的時間。我就想,幹嘛不乘這個機會把認證好好準備一下呢。

2、考前準備

其實我真正開始準備考試是3月11日,羣主在共享資料中有一個excel表格裏面有認證考試的考點。我按照這個知識點列表自己製作了一個number的表格,每天給自己記錄學習的狀況。按照這個記錄,我第一輪所有知識點是4月1日這天全部過完的。一共花了21天

這個過程,我都基本上採取的是梳理-->理解-->總結的方式來進行的,這個過程中我一共寫了21篇博文(包括後面一階段),加起來可能有兩萬多字。大家有興趣的話,可以來踩一踩,地址在這邊,https://www.jianshu.com/u/0665e735f216。

整個過程一開始是在家辦公,時間比較寬裕,寫了一些比較長的文章。到了後面復工了,我就晚上回家以後學習,然後寫文章,差不多每天都會到12點多吧。這帶來的一個後果是,每天晚上寫完文章都很興奮,導致有的時候會失眠。當然,這二十一天並不是每天都是這樣,有的時候白天要開會,要解決困難問題又或者有團建,那天晚上基本上是搞不成的。

這21天給我最大的收穫是給我形成了學習-思考-寫作的正反饋,能夠感受到自己每天在進步是促使我繼續下去的最大動力。前幾天看到羣主在看一本書,是李笑來老師的《把時間當做朋友》,這本書我也看過,裏面的內容非常不錯。書中提到一點,寫作是人對自己最有效也最持久的投資,這個過程中,你需要思考,總結,提煉並且把你的思考結果和他人進行交流。

4月1日結束之後,由於是清明節,同時工作上面出現了一些問題需要解決,我中途停了一段時間。大概在4月13號的時候又重新開始,這一回我加入了考證打卡羣。這個階段主要是查漏補缺做真題,這個過程的意義在於提供了很多材料讓我可以來使用之前學到的知識,畢竟有很多知識點,日常工作中如果使用不到,是很難想到一些應用場景的。在這個過程中,我也在羣裏認識了很多朋友,大家一起討論問題非常愉快。羣主GitHub上面的真題,包括博士的40道真題,之前已經考過的一些兄弟提供的題目,我全部都做了一遍,幫助非常大,考過之後發現其實大部分題目都見過。後來有一天,羣主和我說你差不多了。我想了想確實是這樣,於是找到之前報名的賬號到考試網站去約了時間。

3、考試的經過

我是提前三天約的考試,因爲我想在考前再過一遍真題和考點。事實證明這個舉措很有效果,後來在考試過程中遇到的“function_score”的題目就是在這個過程中弄明白的。考試的當天我請了一天假在家看知識點和真題,考試時間選的是晚上19點到22點,因爲我準備用公司的科學上 wang,而放假之前一天的晚上基本上是沒什麼人加班的。我自己另外買了一條 科學上wang,不過網速自然是比不上公司的專線了。

設備方面,我使用的是12寸的macbook配上了外置的顯示器和鍵盤,也是我運氣比較好,監考官允許我使用這些外接設備,不然的話,在macbook的12寸屏幕上考試,我估計會把眼睛看花吧。考官對我的環境檢查得非常仔細,我房間的各個角落來來回回看了2遍,花了不少時間。後來又讓我把程序塢裏面所有的圖標去掉,把除了瀏覽器之外所有的程序關掉。來來回回折騰了半個小時。我是18:45開始的,到了差不多19:15才啓動考試程序進入考試環境。

整個檢查過程弄得我非常緊張,導致我剛開始做題的時候腦子一片空白,打字的手都有點在抖。我有一個不太好的習慣,想事情的時候喜歡用手託着下巴,有的時候會把嘴捂上,這個時候監考官就會跳出來告訴我這是不允許的。這樣的事情發生了三次,基本上我手一碰到嘴,他就會跳出來,感覺監考官全程都是看着我的。考試時候桌面的那個官方文檔是一個大索引,之前查文檔我從來沒有這麼玩過,找到正確的文檔也花了好一會兒,這個是我比較失誤的一個地方,如果能提前熟悉,至少能節省一些時間。考試的集羣有4個,考試界面有整整一頁都是描述這個集羣,要仔細看一看。

一開始比較慌,前面幾題花了我不少時間,到了後面適應了以後做題速度就加快了。20點的時候我只完成了2道題,到了21點我做了6道題,大概是在21:50左右我完成了全部題目。這之後我回過頭來看之前有問題的題目。一題是一道跨集羣搜索的問題,這道題位置比較靠前,之前由於太緊張,怎麼調整搜索DSL也得不到正確的結果,在檢查得過程中發現是集羣的名字寫錯了。

下面就是這道上面提到的function_score的真題。

索引 movie-1,保存的電影信息,title是題目,tags是電影的標籤。

要求:

  1. 在title中包含“my”或者“me”。

    1. 如果在tags中包含"romatic movies",該條算分提高,如果不包含則算分不變。

    其實我一開始是用的bool search做的,做完了感覺不對。因爲如果用bool的話,無論怎樣調整,都有可能搜索出一個title中不包含“my”或者“me”但是tags中包含“romatic movies”,又或者出現一條結果中出現my或者me,但是因爲tags中不包含“romatic movies”而導致這個文檔沒有被包含在搜索結果中。而題目的意思是tags這個條件應該是一個加分項而已。後來在檢查得時候,我想到了用function_score來做。可能是緊張的緣故,我敲出來的DSL在Kibana中一直沒辦法正確解析,自己去檢查那個語句怎麼也看不出任何問題。我當時的心態有點像下面這張圖:

    後來,我想,官方文檔上面的例子總是對的吧,於是把官方文檔上的語句拷貝到kibana中,再把我之前寫的查詢,貼過去,結果果然成功了。

    這個時候時間還有6分鐘,我覺得自己已經沒有什麼可以做的了,而且確信所有題目應該都是正確的,於是提交了答案。監考官和我反覆確認是否要結束考試,這個時間考試環境自動斷開了,我看了時間是22:14:37。應該正好是3個小時。考完後,我乘自己還記得趕緊把這道題目記錄下來。接着到羣裏和羣友聊磕。這過程中,我打開郵箱,發現考試結果已經出來了。看了一下郵件的時間是22:35,20分鐘就出了結果,考試機構的速度也是很快了。

    4、真題

    現在來羅列一下我還記得的真題吧:

    • 對集羣進行allocation-awareness配置

    • 跨集羣搜索

    • 之前很多羣友見過的食品供應商索引的同義詞Analyzer搜索配置

    • 一個bool search

    • function_score

    • ES安全設置和角色配置

    • 動態mapping

    • ingest pipeline + script + reindex

    還是食品供應商那道題,滿足name中包含某字段,然後返回商品top10的供應商的名字。

    剩下一道題目確實想不起來了,其實也不重要,這些題目真題裏面多少都有些影子。

    我想着重說說其中兩道題目。一個就算同義詞那題,很多羣友反饋題目錯了,我做完後搜索出來的總條目是141和題目中要求的是一致的,不是羣友帖子裏面的144,也許後來官方調整過了。我的做法和他有一點區別,就是在synonym filter之前我還加了一個lowercase filter。然後同義詞只設置oz => ounces。

    另外是function_score的題目,我大概是這麼做的。

    GET /movie-1/_search
    {
      "query": {
        "function_score": {
          "query": {
            "bool": {
              "should": [
                {
                  "match": {
                    "title": "my"
                  }
                },
                {
                  "match": {
                    "title": "me"
                  }
                }
              ]
            }
          },
          "boost": "5",
          "functions": [
            {
              "filter": {
                "term": {
                  "tags.keyword": "romatic movies"
                }
              },
              "weight": 5
            }
          ]
        }
      }
    }
    

    這樣做的好處是後面的term search只對評分有影響,對搜索結果是沒有影響的。

    不過這個結果我沒有驗證過,我的ES機器之前已經關掉了,等後面我驗證過會來更新這個結果。

    5、小結與致謝

    經過差不多2個月的努力,我最終拿到了Elastic 認證,並且在此過程中受益良多。Elastic 認證考試,說難也難,說不難其實也不難。說它難,它的難點在於這個考試的知識點覆蓋廣,通過標準高,不經過精心的準備,很通過考試。說它不難,因爲考試的題目其實都是非常基本的使用方法,很少有在題目中故意刁難考試者。只要努力用心準備就一定能通過

    最後我要在此感謝很多人,首先是羣主,沒有這個社羣,很難在市面上找到這麼多全面的資料,平時在羣裏,有技術問題,羣主也會很耐心地進行解答,對我幫助非常大。其次是我太太,在這兩個月裏面,我基本上很少做家務,陪孩子的時間也比較少,感謝你的理解和支持。然後是我的父母,感謝你們對我們和孩子們的悉心照料,讓我少了很多後顧之憂。接着是我的孩子們,你們的笑容是我永遠的動力。最後感謝認證羣的水友們,和你們討論技術問題是非常開心的一件事情,祝社羣越辦越好!謝謝大家。


    PS:  這是球友胖胖虎 2020-5-2 的分享。截至:2020-5-10,已經有10位球友通過Elastic 認證工程師考試!

    首發地址:https://articles.zsxq.com/id_ic8aw8lwlw6p.html


    更多推薦:

    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章