es資料操作入門

2022-03-23 08:38:38 字數 2796 閱讀 2420

一、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/1

put /school/student/2

put /school/student/3

2. 更新文件

put /school/student/1

3. 刪除

(1)刪除某個文件:

delete /school/student/1

(2)刪除整個索引:

delete /school

4. 搜尋

(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/_search

}, }

],"filter": }}

}}}

bool表示搜尋條件組合,可以巢狀,其語法格式如下:

}

「must」、「should」、「must_not」都可以包含多個查詢條件,分別是與、或、否的關係,而這三個整體則是與的關係。

「filter」子句允許使用查詢來限制將由其他子句匹配的文件,而不改變計算分數的方式。

5. 操作對映

(1)檢視對映:

插入資料時,若對應索引不存在,es會自動識別各個欄位的資料型別,建立索引。

(2)設定對映:

如果es自動生成的對映不符合我們的需求,我們可以對它進行修改,刪除並重新建立索引。例如:

put /school

, "student" : ,

"name" : ,

"city" : ,

"interests" : ,

"introduction" : }}

}}

es預設的索引的分片數和複製節點數設定分別是5和1,與實際情況不符時,索引狀態是「yellow」。

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...