Elasticsearch讀書筆記(二)

接Elasticsearch讀書筆記(一)

Elasticsearch讀書筆記(二)

靜態對映欄位型別

1、keyword。適用於索引結構化的欄位,例如姓名,電話號碼,電子郵箱,身份證等。通常用於過濾,排序,聚合,精確搜尋。

2、數字。Long,Integer等。

3、text。全文搜尋,例如文件內容,產品描述等。透過分詞器生成倒排索引。不用於排序,聚合。

4、date。內部儲存的是毫秒計時的長整型,配置的時候要設定格式化。

5、boolean。

6、binary。Base64編碼的字串,預設不儲存,不搜尋。

7、array。沒有專門的陣列型別。第一個值決定整個陣列的型別,內部型別必須一致。

8、object。文件內包含的子物件,但是寫入ES後會扁平化。

9、nested。因為文件內部的子物件會被扁平化,如果希望子物件也能被搜尋,就指定此型別。

10、geo_point。經緯度,用於查詢一定範圍內的地理位置。透過地理位置或相對中心點的距離聚合文件。把距離因素整合到文件評分中,透過距離對文件排序。

11、geo_shape。存一塊區域。

12、IP。

13、range。時間,年齡範圍。例如date_range、integer_range等。例如一個商品的保質期是從2020-01-01~2020-12-31,可以設定shelf_life:{type:date_range,format:yyyy-MM-dd}。商品資訊是:shelf_life:{gte:2020-01-01,lte:2020-12-31}

14、token_count。統計字串分詞後詞項的個數。

元欄位

_index。所屬索引。

_id。文件ID。

_source。文件正文的原始JSON。

_size。_source欄位大小。

_all。所有欄位拼接在一起的總欄位,空格分開。多用於有關鍵詞,但不指定關鍵詞屬於哪個具體欄位。

_field_names。儲存文件中包含非空欄位的名字,常用於exists查詢。

_routing。自定義路由值,預設是ID。

搜尋機制

1、輸入原始文件。

2、儲存原始文件,生成docID。

3、透過分詞過濾生成倒排索引。

4、使用者查詢,分詞後查詢倒排索引,定位文件集。

5、對文件集評分,排序,高亮處理後返回。

簡單查詢

term query。不分詞,精確匹配。

match query。分詞。

terms query。包含多個詞的文件。

range query。匹配範圍內的數值,日期,字串文件。gt>,gte>=,lt<,lte<=。

exists query。欄位中非空值的文件。

prefix query。欄位中給定字首開始的文件。

wildcard query。萬用字元查詢。

regexp query。正則表示式查詢

fuzzy query。錯詞白字的模糊查詢。

type query。查指定型別的文件。

ids query。指定ID集的文件。

Elasticsearch讀書筆記(二)