一、文檔
- Elasticsearch 是面向文檔的,文檔是所有可搜索數據的最小單位,例如
1、日志文件中的日志項
2、 一本電影的具體信息/一張唱片的詳細信息
3、 MP3播放器里的一首歌/一篇PDF文檔中的具體內容
- 文檔會被序列化成JSON格式,保存在Elasticsearch中
1、JSON對象由字段組成
2、每個字段都有對應的字段類型(字符串/數值/布爾/日期/二進制/范圍類型)
- 每個文檔都有一個
Unique ID
1、可以自己指定ID
2、或者通過Elasticsearch自動生成
- 一篇文檔包含了一系列字段,類似數據庫表中的一條記錄
1、JSON文檔,格式靈活,不需要預先定義格式
2、字段的類型可以指定或者通過Elasticsearch自動推算
3、支持數組/支持嵌套
CSV轉換成Elasticsearch數據
- 文檔的元數據,每一篇文檔都有相應的元數據,見下圖的元數據字段的含義
元數據
二、索引
-
Index
- 索引是文檔的容器,是一類文檔的結合
1、
Index
體現了邏輯空間的概念:每個索引都有自己的Mapping定義,用于定義包含的文檔的字段名和字段類型
2、Shard
體現了物理空間的概念:索引中的數據分散在Shard
上
- 索引的
Mapping
和Settings
1、
Mapping
定義文檔字段的類型
2、Setting
定義不同的數據分布
圖2-1
- 索引的不同語意
名詞:
一個Elasticsearch集群中,可以創建很多個不同的索引(B樹索引/倒排索引)
動詞:
保存一個文檔到Elasticsearch的過程也叫索引(Indexing
)
- Type
在7.0之前,每個索引都可以設置多個
Type
的,每個Type
底下擁有一些相同結構的文檔,在6.0開始,Type
已經被廢除掉。
在7.0開始,每個索引當中只能創建一個Type -“_doc”
- 關系型數據庫 與 Elasticsearch 的對比
關系型數據庫(比如Mysql) | Elasticsearch |
---|---|
數據庫Database | 索引Index |
表Table | 類型Type |
數據行Row | 文檔Document |
數據列Column | 字段Field |
約束 Schema | 映射Mapping |
SQL | DSL |
- 一些基本的API
# Index 相關 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