一、es中文檔的元數據包括:
1、_index:
索引(index)類似於關系型數據庫里的數據庫(database),事實上,我們的數據被存儲和索引在分片(shards)中,索引知識把一個或多個分片分組在一起的邏輯空間,
索引名字必須全部小寫,不能以下划線開頭,不能包含逗號。
2、_type:
類型(type)類似於關系型數據庫中的table,在es中我們用type表示相同的‘事務’,每個類型(type)都有自己的映射(mapping)或者結構定義,就像傳統數據庫表中的列一樣。所有類型下的文檔被存儲在同一個
索引下,但是類型的映射(mapping)會告訴Elasticsearch不同的文檔如何被索引。
_type 的名字可以是大寫或小寫,不能包含下划線或逗號。
3、_id:
id僅僅是一個字符串,它與_index和_type組合時,就可以在es中唯一標識一個文檔,當創建一個文檔,你可以自定義 _id ,也可以讓Elasticsearch幫你自動生成。
二、如何索引一個文檔
1、自定義id
如果你的文檔有自然的標識符(例如 user_account 字段或者其他值表示文檔),你就可以提供自己的 _id ,使用這種形式
的 index API:
PUT /{index}/{type}/{id} { "field": "value", ... }
響應
{ "_index": "...", "_type": "...", "_id": "...", "_version": 1, "created": true }
響應指出請求的索引已經被成功創建,這個索引中包含 _index 、 _type 和 _id 元數據,以及一個新元素: _version 。
Elasticsearch中每個文檔都有版本號,每當文檔變化(包括刪除)都會使 _version 增加。
2、自增id
如果我們的數據沒有自然ID,我們可以讓Elasticsearch自動為我們生成。請求結構發生了變化: PUT 方法—— “在這個URL中存
儲文檔” 變成了 POST 方法—— "在這個文檔下存儲文檔" 。
URL現在只包含 _index 和 _type 兩個字段:
POST /{index}/{type}/ { "title": "...", "text": "...", "date": "..." }
響應內容與剛才類似,只有 _id 字段變成了自動生成的值:
{ "_index": "...", "_type": "...", "_id": "wM0OSFhDQXGZAWDf0-drSA", "_version": 1, "created": true }
自動生成的ID有22個字符長,URL-safe, Base64-encoded string universally unique identifiers, 或者叫 UUIDs。
來自 https://blog.csdn.net/qq_40651753/article/details/86006446