Funliday-旅遊規劃 的 App 最近上了一個 highlight 的功能,主要是在搜尋完的結果頁會把你搜尋的關鍵字標示出來。這篇就是要來分享一下,如何應用 highlight 功能來改善中日文的關鍵字搜尋,而且效果還不錯喔。
簡單提一下,其實重點還是在要搜對欄位,原本使用 title_* 搜尋全部語言的方式實在很不好,但當時一直沒有時間,也不知道要如何改會比較好,這次靠著 highlight 幫了大忙!
---
對了,小編最近會在 hahow 上一門新的課程,內容是與後端 Node.js 有關,讓已經會前端開發的工程師一起來學後端,到時候再來工商服務一下!
#elasticsearch #cjk #jieba
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
elasticsearch 應用 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
本篇文章是個技術分享文,Netflix 分享內部過去四年來是如何打造一個分散式的 Tracing System。
Netflix 的串流服務想必大家都很熟悉,但是作為服務提供者來說,要如何維運這套分散式的串流服務就沒有這麼簡單。
舉例來說,當一個特定的使用者回報其服務有問題時,內部的系統要如何把下列資訊給全部串接起來組合出一個可以讓內部工程人員除錯的機制
1. Streaming Session
2. 微服務之間的流量
3. CDN 的處理
對使用者來說就是串流有問題,但是背後的網路封包實際上經過哪些 app,走過哪些節點,踏過哪些機房都是很複雜的事情,不把這些全部資訊都組合起來則非常困難除錯。
Netflix 決定要針對這個問題打造一個分散式的 Tracing 平台,而那時還沒有這麼多如 Opentracing, Zipkin, Jaeger 等相關的開源專案可以用,所以 Netflix 必須要自己去打造這套系統。
這套系統的組成跟現今常見的架構雷同,Application 本身要透過 Library 來產生出 Tracing 需要的資料,接者透過一套串流處理將資料給傳送到後端的儲存空間,最後則是由UI等相關服務來讀取資料方便使用
本篇文章基於這種架構下去探討 Netflix 的心路歷程,其中幾個比較有趣的問題這邊列出來
1. Tracing 資料的取樣該如何設計,過於頻繁會造成資料空間使用過量,過於稀少則會造成資料不夠完整,這部分 Netflix 採用基於 hybrid head-based 的取樣方式,針對特定區間採用 100% 的取樣方式,而其餘則是根據設定來隨機取樣
2. 資料儲存的部分則是有非常豐富的變化歷史,早期使用 ElasticSearch 後來對其 R/W 的效能感到不滿而輾轉到使用 Cassandra,而 Cassandra 最初使用 AWS 的 SSD 做為底層應用,後來改轉使用 EBS 並且搭配資料壓縮與一些過濾機制, 2021 決定要引入 Storage Gateway 的方式來處理
儲存方面幾乎是每年都在改善與改進,真的要遇到問題才有辦法針對問題下藥,這也是架構方面很難一口氣做到最好,隨者業務與流量擴大,很多現有的架構可能都需要打掉重來才有辦法應付
全文不算太短,但是推薦有興趣的人可以閱讀全文來看看 Netflix 是如何打造這套系統的
https://netflixtechblog.com/building-netflixs-distributed-tracing-infrastructure-bb856c319304
elasticsearch 應用 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
從本篇開始,接下來將幫大家介紹 k8s.af 裡面關於各種 Kubernetes 維運上遇到的各種問題。
本篇主題: 為什麼我們要在兩小時內從 fluent-bit 轉換到 fluentd
症狀: 某日下午,開發者通知疑似某些生產環境上面的日誌出現問題,沒有看到任何更新。
作者的團隊已經使用 fluent-bit 來轉發應用程式日誌已經三年多了,過去的經驗表示 fluent-bit 表現良好,有個良好的效能,設定也相對簡單。
問題發生時,首先觀察 fluent-bit 相關的資訊,從中得到關於 ElasticSearch 拒絕接受相關請求的錯誤訊息,最後輾轉從 ElasticSearch 去解決,再也沒有任何錯誤訊息出現了。但是實際的問題還是存在,該看到的日式
然而其實主體問題還在,日誌還是沒有被收集起來送出去,因此這時候團隊就開始思考該怎麼做。其中嘗試過升級降級已經修改不同參數,但是都沒有辦法解決問題,最後於 GitHub 上面找到一個相關 issue(https://github.com/fluent/fluent-bit/issues/2416),問題情況一樣類似而且沒有解決方法,所以幫助不大,但是至少知道自己並不孤單。
一切都明瞭後,作者團隊知道沒有辦法針對 fluent-bit 的這個錯誤去修改,因此開始思考其他的替代方案,最後選擇使用了 fluentd 來替代。整個抽換過程是緩慢的,先從出問題的節點開始,慢慢的部署 fluentd 並且移除 fluent-bit,其中還透過了 node Affinity 以及 anti-affinity 來幫忙調整部署的選擇。
最後有興趣的話建議點選原文,幫自己增廣見聞一下
原文: https://prometheuskube.com/why-we-switched-from-fluent-bit-to-fluentd-in-2-hours