一、es資料儲存簡單介紹
1. 概念解釋
index:索引,它是單個資料庫的同義詞。
type:索引型別,它是單個資料表的同義詞。
document:文件,它是單條資料記錄的同義詞。
理論上乙個index可以包含多個type,但是在實際應用中一般乙個index只包含乙個type,若包含多個type,容易造成資料干擾等問題,有百害而無一利。
2. es索引基本原理
es缺省會為文件的所有字段建立倒排索引。
es對單個欄位的值的內容進行分詞,分詞彙總稱為term dictionary,term dictionary中各個分詞都對應乙個文件id陣列(posting list),term dictionary是有序的,查詢時可使用二分查詢,查詢到term即可根據對應的文件id陣列讀取文件內容了。
posting list也是有序的,使用增量編碼壓縮,將大數變小數按位元組儲存。這樣的儲存方式不僅能節省儲存空間,也方便多欄位聯合查詢時多個posting list之間進行並集操作,將各個字段查詢到的term對應的posting list做按位與運算,即可得到最終的文件id陣列。
當資料量很大時,term dictionary也是很龐大的,無法全部存在記憶體中,所以es又加多了一層term index,只儲存部分詞的字首,以fst的形式儲存在記憶體中(fst以位元組的方式儲存了所有的term),節省記憶體,檢索很快。
所以es搜尋資料時,先在記憶體中term index查詢到對應的term dictionary的block位置,再去磁碟上查詢term,找到term以後再根據對應的文件id陣列去讀取文件資料。
二. es簡單操作入門
注:以下操作皆是在kibana上進行的,index為「school」,type為「student」。
1. 插入文件
put /school/student/12. 更新文件put /school/student/2
put /school/student/3
put /school/student/13. 刪除
(1)刪除某個文件:
delete /school/student/1(2)刪除整個索引:
delete /school4. 搜尋
(1)按文件id搜尋:
get /school/student/1(2)搜尋所有文件:
get /school/student/_search(3)全文搜尋:
get /school/student/_search查詢結果:},"size": 2,//指定返回文件數量
"from": 0//指定位移
}
其中「_score」是評分,表示匹配度,從高到低排序。
(4)精確匹配:
get /school/student/_search}}
get /school/student/_search(5)範圍搜尋:}}
get /school/student/_search}}}(6)取消評分排序,提高效能:
get /school/student/_search}}(7)or條件查詢:}}}
get /school/student/_search搜尋多個關鍵字的時候,es預設它們是or的關係,若想表示and關係,需借助bool和must查詢。}}
(8)更複雜的搜尋:
get /school/student/_searchbool表示搜尋條件組合,可以巢狀,其語法格式如下:}, }
],"filter": }}
}}}
}「must」、「should」、「must_not」都可以包含多個查詢條件,分別是與、或、否的關係,而這三個整體則是與的關係。
「filter」子句允許使用查詢來限制將由其他子句匹配的文件,而不改變計算分數的方式。
5. 操作對映
(1)檢視對映:
插入資料時,若對應索引不存在,es會自動識別各個欄位的資料型別,建立索引。
(2)設定對映:
如果es自動生成的對映不符合我們的需求,我們可以對它進行修改,刪除並重新建立索引。例如:
put /schooles預設的索引的分片數和複製節點數設定分別是5和1,與實際情況不符時,索引狀態是「yellow」。, "student" : ,
"name" : ,
"city" : ,
"interests" : ,
"introduction" : }}
}}
es 的資料操作
一 es資料的操作 1.建立索引 1 語法put 2 示例put index curl xput 2.建立資料 1 資料結構es儲存三個必要構成 index type id構成 說明 index 索引 資料儲存的地方 type 型別 資料對應類 id資料的唯一標識 2 語法put doc id po...
ES快速入門
一 es概述 es elasticsearch es是乙個基於restful web介面並且構建在apache lucene之上的開源分布式搜尋引擎。可以在極短的時間內儲存 搜尋和分析大量的資料。通常作為具有複雜搜尋場景情況下的 核心發動機。二 使用案例 1 將es作為 的主要後端系統 比如現在搭建...
ES語法入門
查詢語句 等價於sql x 等價於sql in 等價於 gt 大於 gte 大於等於 lt 小於 lte 小於等於 select from tablename where tablefield 2and tablefield 1等價於 is not null notnull等價於 is null n...