眾所周知,ElasticSearch 存在一個問題,無法查詢最近 1s 的寫入。近實時這個屬性,限制了其在某些場景的應用。本文記錄了我在日常工作中想到的,解決特定場景的一些方案。既然是記錄,便會有好有壞,僅供大家參考。 預設上下文 一個書籍(book)索引(index),文檔(doc)屬性有:名稱( ...
眾所周知,ElasticSearch 存在一個問題,無法查詢最近 1s 的寫入。近實時這個屬性,限制了其在某些場景的應用。本文記錄了我在日常工作中想到的,解決特定場景的一些方案。既然是記錄,便會有好有壞,僅供大家參考。
預設上下文
一個書籍(book)索引(index),文檔(doc)屬性有:名稱(name),出版年份(year),作者(author),價格(price),價格區間(price_range),國家(country)
總體約定
- 1s 盲區問題是 es 的固有缺陷,本文約定,所有的解決方案都引入額外的工具來彌補這個缺陷
存在性查詢
場景描述
所有書籍的價格被劃分為少數幾個區間。希望查詢價格為某個區間的文檔是否存在。
解決方案
寫文檔時,維護一個(價格區間,更新時間)輔助表。查詢時先查詢 es ,然後查詢輔助表。如果不存在,則相信 es 結果;如果近 1s 內沒有更新,則相信 es 結果;如果近 1s 記憶體在更新,可以假設存在。