(二)elasticsearch之入門介紹

一、Document

1、相當於JSON Object,由字段(Field)組成,常見數據類型如下:

  • 字符串:text、keyword
  • 數值型:long、integer、short、byte、double、float、half_float、scaled_float
  • 布爾型:boolean
  • 日期型:date
  • 二進制:binary
  • 範圍類型:integer_range、float_range、long_range、double_range、date_range

2、元數據,用於標註文檔的相關信息

  • _index:文檔所在的索引名
  • _type:文檔所在的類型名
  • _id:文檔唯一id,可自行指定,如不指定,則自動生成(Strings.base64UUID())
  • _uid:組合id,由 _id 和 _type組成(6.x _type不再起作用,同 _id 一樣)
  • _source:文檔的原始json 數據
  • _all:整合所有字段內容到該字段,默認禁用

二、倒排索引

1、介紹

  • 單詞到文檔id 的關係。
  • 倒排索引是搜索引擎的核心,主要包含2部分:單詞詞典和倒排列表

2、單詞詞典

  • 記錄所有文檔的單詞,一般比較大
  • 記錄單詞到倒排列表的關聯信息
  • 單詞字典的一般實現是 B+ Tree

3、倒排列表(position list)

  • 倒排列表記錄了單詞對應的文檔集合,由倒排索引項組成
  • 倒排索引項 主要包含如下信息:
    • 文檔id,用於獲取原始信息
    • 單詞頻率(TF, term frequency),記錄該單詞在文檔中出現的次數,用於後續相關性算分
    • 位置(position),記錄單詞在文檔中的分詞位置,用於做詞語搜索
    • 偏移(offset),記錄單詞在文檔的開始和結束位置,用於做高亮顯示

舉例:

在這裏插入圖片描述

注:

es存儲的是一個json格式的文檔,其中包含多個字段,每個字段都會有自己的倒排索引。

文檔如下:
{
    "name": "haha",
    "job": "java"
}
此時,es會有2個倒排索引,一個是 name 倒排索引,一個是 job 倒排索引。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章