原创 Elasticsearch系列---使用中文分詞器

前言 前面的案例使用standard、english分詞器,是英文原生的分詞器,對中文分詞支持不太好。中文作爲全球最優美、最複雜的語言,目前中文分詞器較多,ik-analyzer、結巴中文分詞、THULAC、NLPIR和阿里的aliws都是

原创 Elasticsearch系列---近似匹配

概要 前面的match查詢只能告訴我們,搜索的文檔裏有這些關鍵詞,但無法告知詞語之間的順序,而不同的詞語順序表達的意思可能完全相反。我們想要的,是跟我們期望搜索的語義要相似,這就需要短語匹配和近似匹配來控制了。 短語搜索 短語搜索即把一小段

原创 Elasticsearch系列---多字段搜索

概要 本篇介紹一下multi_match的best_fields、most_fields和cross_fields三種語法的場景和簡單示例。 最佳字段 bool查詢採取"more-matches-is-better"匹配越多分越高的方式,所

原创 Elasticsearch系列---前綴搜索和模糊搜索

概要 本篇我們介紹一下部分搜索的幾種玩法,我們經常使用的瀏覽器搜索框,輸入時會彈出下拉提示,也是基於局部搜索原理實現的。 前綴搜索 我們在前面瞭解的搜索,詞條是最小的匹配單位,也是倒排索引中存在的詞,現在我們來聊聊部分匹配的話題,只匹配一個

原创 Elasticsearch系列---深入全文搜索

概要 本篇介紹怎樣在全文字段中搜索到最相關的文檔,包含手動控制搜索的精準度,搜索條件權重控制。 手動控制搜索的精準度 搜索的兩個重要維度:相關性(Relevance)和分析(Analysis)。 相關性是評價查詢條件與結果的相關程度,並對相

原创 Elasticsearch系列---索引管理

概要 Elasticsearch讓索引創建變得非常簡單,只要索引一條新的數據,索引會自動創建出來,但隨着數據量的增加,我們開始有了索引優化和搜索優化的需求之後,就會發現自動創建的索引在某些方面不能非常完美的適應我們的需求,我們開始考慮手動創

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

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

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

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

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

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

原创 Elasticsearch系列---初識mapping

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

原创 Elasticsearch系列---定製mapping

概要 本篇接着前一篇內容,繼續介紹mapping信息,重點傾向於自定義mapping、自定義對象以及數組集合類的底層結構。 自定義mapping 上一篇文章介紹的都是Elasticsearch的自動mapping,我們在創建索引時,可以先指

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

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

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

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

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

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

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

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