原创 微服務之spring-cloud

一 什麼是微服務 微服務就是把一個原本臃腫的項目按照功能模塊進行拆分,形成多個功能較爲獨立和單一的服務,這些服務聯合起來可以完成原來整個大服務的功能。   二 爲什麼要微服務化 一個服務包含太多功能,當某個部分出現故障,或是需要維護重啓時

原创 JMM Java內存模型

一 硬件內存架構 CPU處理速度遠大於內存處理速度,因此中間設置有高速緩存(cache,可以有多級)。這樣會引發數據的一致性問題,即對於共享的數據而言,怎樣保證各個CPU拿到的一致。 解決方案: 1. 總線加鎖。優點:實現簡單;缺點:降

原创 Spring IOC要點

一 什麼是IOC IOC即Inversion of Control,控制反轉,是面向對象編程中的一種設計原則,可以用來降低機代碼之間的耦合度。Spring IOC是將類的依賴關係和生成交給了Spring容器去管理,至於我們自己的app則可

原创 八 tie_breaker參數優化dis_max

案例:搜索title或content中包含java beginner的帖子 GET /forum/article/_search {     "query": {         "dis_max": {             "que

原创 七 dis_max--best fields策略

1. 假設數據 doc1: title: black cat. content: The cat like eat fish. doc2: title: red dog. content: The dog like eat bone. d

原创 四 match的底層實現轉化

1、普通match如何轉換爲term+should {     "match": { "title": "java elasticsearch"} } 使用諸如上面的match query進行多值搜索的時候,es會在底層自動將這個matc

原创 五 boost條件權重控制

默認情況下,搜索條件的權重都是一樣的,都是1 搜索條件的權重,boost,可以將某個搜索條件的權重加大,此時當匹配這個搜索條件和匹配另一個搜索條件的document,計算relevance score時,匹配權重更大的搜索條件的docum

原创 六 多shard場景下relevance score不準確原因

shard中只有一部分的document,默認情況下,IDF是在shard本地計算的。   在一個shard中,有多個title中包含Java的document,比如10個。當一個搜索title中包含Java當請求到這個shard到時候,

原创 三 查詢案例

一 結構化搜索_在案例中實戰基於bool組合多個filter條件來搜索數據 1、搜索發帖日期爲2017-01-01,或者帖子ID爲XHDK-A-1293-#fJ3的帖子,同時要求帖子的發帖日期絕對不爲2017-01-02 select *

原创 二 bitset與caching機制

1. 對於document中的每一個filed,均建立一個bitset,其中存放的值爲0(在文檔中不存在)和1(在文檔中存在)。 例如,有6個文檔,id和date是其中的兩個filed,對於這兩個filed分別建立bitset: id:[

原创 富爸爸 窮爸爸 隨記(2)

財富不是你賺了多少,而是你能保持多少。

原创 富爸爸 窮爸爸 隨記(1)

要學習變得富有的方法,洞悉金錢運作的原理,讓錢爲我工作,而不是我爲錢工作。 1. 面對想要但目前無法負擔的物品時 窮爸爸:我負擔不起。 富爸爸:我怎樣才能負擔的起呢? 經常這樣問,可以鍛鍊自己的思維,避免思維惰性。 2. 關於學習 窮爸爸

原创 一 term filter搜索

1. 插入數據: POST /forum/article/_bulk { "index": { "_id": 1 }} { "articleID" : "XHDK-A-1293-#fJ3", "userID" : 1, "hidden":

原创 二十九 document寫入流程分析

一 document寫入流程--第一版 1. document寫入流程: (1)document數據首先被寫入內存buffer緩衝中。 (2)執行commit操作,寫commit point到磁盤。 (3)buffer中的數據就會寫入一個

原创 二十八 不停機重建索引&倒排序索引不可變

1、重建索引 一個field的設置是不能被修改的,如果要修改一個Field,那麼應該重新按照新的mapping,建立一個index,然後將數據批量查詢出來,重新用bulk api寫入index中 批量查詢的時候,建議採用scroll ap