ElasticSearch系列 - 文檔&索引

ElasticSearch系列 - 文檔&索引

對比MySQL
MySQL ElasticSearch
Table Index(Type)
Row Document
Column Field
Schema Mapping
SQL DSL
  • ElasticSearch:Schemeless(弱模式)/相關性/高性能全文檢索
  • MySQL:事務/join
文檔(Document)

ElasticSearch是面向文檔的,文檔是所有可搜索數據的最小單位

  • 一個error日誌
  • 一個房屋具體信息
  • 一個詳細的用戶信息

文檔會被序列化爲JSON格式,保存在ElasticSearch中

  • JSON對象由字段組成
  • 每個字段都有對應的字段類型(字符串/數值/布爾/日期/二進制/範圍類型)

每個文檔都有一個Unique ID

  • 可以指定ID
  • 或者通過ElasticSearch自動生成
JSON文檔

一篇文檔包含一系列的字段,對比數據庫表中一條記錄

JSON文檔,格式靈活,不需要預先定義格式

  • 字段的類型可以指定或者ElasticSearch自動推算
  • 支持數組/支持嵌套

例如下述一個文檔

userId,name,content
1,wxt,12|150xxxxxxxx|message

對應ElasticSearch中的JSON爲

{
	userId:1,
	name:"wxt",
    @version:"1",
	content:["12","150xxxxxxxx",message]
}

PS:不一定是上述這種格式,根據Logstash的conf配置不同,解析的規則也不同,生成的JSON格式也不同。

元數據
{
	"_index":"userInfo",
  "_type":"_doc",
  "_id":"1",
  "_score":15.69303,
  "_source":{
			userId:1,
			name:"wxt",
    	    @version:"1",
			content:["12","150xxxxxxxx",message]
	}
},
名稱 含義
_index 文檔所屬索引名
_type 文檔所屬的類型名
_id 文檔唯一Id
_source 文檔原始Json數據
_score 相關性打分
@version 文檔版本信息
_all 已經被廢除
索引(Index)

Index 索引是文檔的容器,是一類文檔的結合

  • Index體現了邏輯空間的概念,每個索引都有自己的Mapping定義,用於定義包含的文檔的字段名和字段類型
  • shard體現物理空間概念,索引中的數據分散在Shard上

索引的Mapping與Settings

  • Mapping定義文檔字段的類型
  • Setting定義不同的數據分佈
{
  "userInfo":{
    "settings":{
      "index":{
        "creation_date":12345678932,
        "number_of_shards":"2",
        "number_of_replicas":"0",
        "uuid":"QND213SJBDJ12JHS",
        "version":{
          "created":"9381311"
        },
        "provided_name":"movies"
      }
    }
  }
}
Type

在7.0之前一個Index可以設置多個type,7.0之後一個索引只能創建一個type-"_doc"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章