天天看點

Elasticsearch核心技術與實戰 第三章09 基本概念(1)- 索引,文檔和 REST API

一 序

   本文為極客時間Elasticsearch核心技術與實戰學習筆記系列。

從這一節課開始,老師開始講述Elasticsearch基本概念。

二 文檔

2.1 文檔

   Elasticsearch 是面向文檔,文檔是所有搜尋資料的最小單元。

文檔類似資料庫裡面的一條長長的存儲記錄。文檔(Document)是索引資訊的基本機關。

每個文檔都有一個uniqueID,其值不會被索引

Elasticsearch核心技術與實戰 第三章09 基本概念(1)- 索引,文檔和 REST API

2.2 文檔中繼資料  

中繼資料是用于标注文檔的相關資訊,那麼索引文檔的中繼資料如下:

  • _index 文檔所屬索引名稱
  • _type 文檔所屬類型名
  • _id 文檔唯一 ID
  • _score 文檔相關性打分
  • _source 文檔 JSON 資料
  • _version 文檔版本資訊
Elasticsearch核心技術與實戰 第三章09 基本概念(1)- 索引,文檔和 REST API

其中 _type 文檔所屬類型名,需要關注版本不同之間差別:

  • 7.0 之前,一個索引可以設定多個 types
  • 7.0 開始,被 Deprecated 了。一個索引隻能建立一個 type,值為 _doc

三 索引

作為名詞,索引代表是在 Elasticsearch 叢集中,可以建立很多不同索引。

作為動詞,索引代表儲存一個文檔到 Elasticsearch。就是在 Elasticsearch 建立一個反向索引的意思

索引,就是相似類型文檔的集合。 

ES 索引就是文檔的容器,是一類文檔的集合。

在devtools 執行:GET movies

{
  "movies" : {
    "aliases" : { },
    "mappings" : {
      "properties" : {
        "@version" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "genre" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "id" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "title" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "year" : {
          "type" : "long"
        }
      }
    },
    "settings" : {
      "index" : {
        "creation_date" : "1589097356250",
        "number_of_shards" : "1",
        "number_of_replicas" : "1",
        "uuid" : "S0Ic8iLJTjKfL4wd-wGckA",
        "version" : {
          "created" : "7020099"
        },
        "provided_name" : "movies"
      }
    }
  }
}
           

根據傳回結果,我們知道:

  • mappings:定義文檔字段的類型
  • settings:定義不同資料分布
  • aliases:定義索引的别名,可以通過别名通路該索引

索引,是邏輯空間概念,每個索引有對那個的 Mapping 定義,對應的就是文檔的字段名和字段類型。相比後面會講到分片,是實體空間概念,索引中存儲資料會分散到分片上。

 跟 MySQL 類比

Elasticsearch核心技術與實戰 第三章09 基本概念(1)- 索引,文檔和 REST API

四 REST API 友善 ES 被各種語言調用

Elasticsearch核心技術與實戰 第三章09 基本概念(1)- 索引,文檔和 REST API

如圖,Elasticsearch 提供了 REST API,友善,相關索引 API 如下:

#檢視索引相關資訊
GET kibana_sample_data_ecommerce

#檢視索引的文檔總數
GET kibana_sample_data_ecommerce/_count

#檢視前10條文檔,了解文檔格式
POST kibana_sample_data_ecommerce/_search
{
}

#_cat indices API
#檢視indices
GET /_cat/indices/kibana*?v&s=index

#檢視狀态為綠的索引
GET /_cat/indices?v&health=green

#按照文檔個數排序
GET /_cat/indices?v&s=docs.count:desc

#檢視具體的字段
GET /_cat/indices/kibana*?pri&v&h=health,index,pri,rep,docs.count,mt

#How much memory is used per index?
GET /_cat/indices?v&h=i,tm&s=tm:desc
           
Elasticsearch核心技術與實戰 第三章09 基本概念(1)- 索引,文檔和 REST API

使用呢dev tools查詢索引資料

Elasticsearch核心技術與實戰 第三章09 基本概念(1)- 索引,文檔和 REST API
Elasticsearch核心技術與實戰 第三章09 基本概念(1)- 索引,文檔和 REST API

繼續閱讀