原创 Elasticsearch系列---性能調優最佳實踐

概要 性能調優是系統架構裏所有組件必不可少的話題,Elasticsearch也不例外,雖說Elasticsearch內的默認配置已經非常優秀,但這不表示它就是完美的,必要的一些實踐我們還是需要了解一下。 開啓慢查詢日誌 慢查詢日誌

原创 Elasticsearch系列---聚合查詢(二)

概要 近似聚合算法 上一篇我們演練的聚合算法,在Elasticsearch分佈式場景下,其實是有略微區別的,簡單來說我們可以把這些聚合算法分成兩類,易並行算法和不易並行算法。 易並行算法 比如max,min,就是多個node或shard可

原创 Elasticsearch系列---實戰零停機重建索引

前言 我們使用Elasticsearch索引文檔時,最理想的情況是文檔JSON結構是確定的,數據源源不斷地灌進來即可,但實際情況中,沒人能夠阻攔需求的變更,在項目的某個版本,可能會對原有的文檔結構造成衝擊,增加新的字段還好,如果要

原创 Elasticsearch系列---聚合查詢(一)

概要 Elasticsearch的聚合查詢,跟數據庫的聚合查詢效果是一樣的,我們可以將二者拿來對比學習,如求和、求平均值、求最大最小等等。 基礎概念 bucket 數據分組,一些數據按照某個字段進行bucket劃分,這個字段值相同

原创 Elasticsearch系列---Java客戶端代碼Demo

前言 前面歷經33篇內容的講解,與ES的請求操作都是在Kibana平臺上用Restful請求完成的,一直沒發佈Java或python的客戶端代碼,Restful纔是運用、理解ES核心功能最直接的表達方式,但實際項目中肯定是以Jav

原创 Elasticsearch系列---Term Vector工具探查數據

概要 本篇主要介紹一個Term Vector的概念和基本使用方法。 term vector是什麼? 每次有document數據插入時,elasticsearch除了對document進行正排、倒排索引的存儲之外,如果此索引的fie

原创 Elasticsearch系列---補充幾個知識點

概要 bulk api有趣的json格式 前面《簡單入門實戰》一節中,有介紹bulk的使用示例,大家一定很奇怪,還有這麼有趣的JSON格式,必須嚴格照他的換行來做,我想把JSON搞得美觀可讀性好一點,居然給我報錯! {"actio

原创 Elasticsearch系列---實戰搜索語法

概要 本篇介紹Query DSL的語法案例,查詢語句的調試,以及排序的相關內容。 基本語法 空查詢 最簡單的搜索命令,不指定索引和類型的空搜索,它將返回集羣下所有索引的所有文檔(默認顯示10條): GET /_search {}

原创 Elasticsearch系列---相關性評分算法及正排索引

概要 上一篇中多次提到了按相關性評分,本篇我們就來簡單瞭解一下相關性評分的算法,以及正排索引排序的優勢。 評分算法 Elasticsearch進行全文搜索時,Boolean Model是匹配的基礎,先用boolean model將

原创 我與《深入理解Java虛擬機-JVM高級特性與最佳實踐》的故事

很早很早就聽過周老師的大名,最早接觸到這本書是從第二版小藍開始的,現在小藍還躺在我家的書架裏,時不時拿出來翻一翻,作爲一枚Java程序猿,沒拜讀過周老師的《深入理解Java虛擬機-JVM高級特性與最佳實踐》都不能算做入門,不得不說,在JV

原创 Elasticsearch系列---初識搜索

概要 本篇主要介紹搜索的報文結構含義、搜索超時時間的處理過程,提及了一下多索引搜索和輕量搜索,最後將精確搜索與全文搜索做了簡單的對比。 空搜索 搜索API最簡單的形式是不指定索引和類型的空搜索,它將返回集羣下所有索引的所有文檔(默

原创 Elasticsearch系列---初識mapping

概要 本篇簡單介紹一下field數據類型mapping的相關知識。 mapping是什麼? 前面幾篇的實戰案例,我們向Elasticsearch索引數據時,只是簡單地把JSON文本放在請求體裏,至於JSON裏的field類型,存儲

原创 Elasticsearch系列---搜索分頁和deep paging問題

概要 本篇從介紹搜索分頁爲起點,簡單闡述分頁式數據搜索與原有集中式數據搜索思維方式的差異,就分頁問題對deep paging問題的現象進行分析,最後介紹分頁式系統top N的案例。 搜索分頁語法 Elasticsearch中sea

原创 Elasticsearch系列---倒排索引原理與分詞器

概要 本篇主要講解倒排索引的基本原理以及ES常用的幾種分詞器介紹。 倒排索引的建立過程 倒排索引是搜索引擎中常見的索引方法,用來存儲在全文搜索下某個單詞在一個文檔中存儲位置的映射。通過倒排索引,我們輸入一個關鍵詞,可以非常快地獲取

原创 Elasticsearch系列---搜索執行過程及scroll遊標查詢

概要 本篇主要介紹一下分佈式環境中搜索的兩階段執行過程。 兩階段搜索過程 回顧我們之前的CRUD操作,因爲只對單個文檔進行處理,文檔的唯一性很容易確定,並且很容易知道是此文檔在哪個node,哪個shard中。 但搜索比CRUD複雜