久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Elasticsearch document id 生成方式是什么

160次閱讀
沒有評論

共計 2156 個字符,預計需要花費 6 分鐘才能閱讀完成。

本篇文章為大家展示了 Elasticsearch document id 生成方式是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

手動指定

根據應用情況來說,是否滿足手動指定 document id 的前提:

一般來說,是從某些其他的系統中,導入一些數據到 es 時,會采取這種方式,就是使用系統中已有數據的唯一標識,作為 es 中 document 的 id。舉個例子,比如說,我們現在在開發一個電商網站,做搜索功能,或者是 OA 系統,做員工檢索功能。這個時候,數據首先會在網站系統或者 IT 系統內部的數據庫中,會先有一份,此時就肯定會有一個數據庫的 primary key(自增長,UUID,或者是業務編號)。如果將數據導入到 Elasticsearch 中,此時就比較適合采用數據在數據庫中已有的 primary key。

如果說,我們是在做一個系統,這個系統主要的數據存儲就是 Elasticsearch 一種,也就是說,數據產生出來以后,可能就沒有 id,直接就放 es 一個存儲,那么這個時候,可能就不太適合說手動指定 document id 的形式了,因為你也不知道 id 應該是什么,此時可以采取下面要講解的讓 Elasticsearch 自動生成 id 的方式。

# put /index/type/id
PUT /test_index/test_type/2
  test_content :  my test 
  _index  :  test_index ,
  _type  :  test_type ,
  _id  :  2 ,
  _version  : 1,
  result  :  created ,
  _shards  : {
  total  : 2,
  successful  : 2,
  failed  : 0
 },
  _seq_no  : 0,
  _primary_term  : 1
}

自動生成

# post /index/type
PUT test_index/test_type
  test_content :  my test automated document id 
  error  :  Incorrect HTTP method for uri [/test_index/test_type?pretty=true] and method [PUT], allowed: [POST] ,
  status  : 405
POST /test_index/test_type
  test_content :  my test 
  _index  :  test_index ,
  _type  :  test_type ,
  _id  :  A7Ma5XYB_s8SuYmy2Xg0 ,
  _version  : 1,
  result  :  created ,
  _shards  : {
  total  : 2,
  successful  : 2,
  failed  : 0
 },
  _seq_no  : 1,
  _primary_term  : 1
# post /index/type
PUT test_index/test_type
  test_content :  my test automated document id 
  error  :  Incorrect HTTP method for uri [/test_index/test_type?pretty=true] and method [PUT], allowed: [POST] ,
  status  : 405
POST /test_index/test_type
  test_content :  my test 
  _index  :  test_index ,
  _type  :  test_type ,
  _id  :  A7Ma5XYB_s8SuYmy2Xg0 ,
  _version  : 1,
  result  :  created ,
  _shards  : {
  total  : 2,
  successful  : 2,
  failed  : 0
 },
  _seq_no  : 1,
  _primary_term  : 1
}

有可能兩個創建 Document 的請求是完全在同一時間執行的(小概率事件),只不過在不同的 Elastic 節點上,那么,如果 _id 自動生成的算法不夠好的話,有沒有可能出現兩個節點,給兩個不同的 Document 創建了相同的 _id ?

當然是不可能的。

GUID 算法可以保證在分布式的環境下,不同節點同一時間創建的 _id 一定是不沖突的(即使是同一個節點,也不會有任何的問題)。

Elasticsearch 自動生成 _id 的機制,可以保證不會出現兩個不同的 Document 的 _id 是一樣的。

注意,自動生成 ID 的時候,使用的是 POST 而不是 PUT;手動生成 ID 的時候使用 PUT 或者 POST 都可以。

另外,這一節的實際操作,我是在 cloud.elastic.co 提供的虛擬機上進行的。其實在準備認證期間,我覺得可以考慮購買兩個月左右的服務;也可以考慮在阿里云上購買。

自動生成的 id,長度為 20 個字符,URL 安全,base64 編碼,GUID,分布式系統并行生成時不可能會發生沖突。

上述內容就是 Elasticsearch document id 生成方式是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計2156字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 和龙市| 获嘉县| 丰镇市| 大庆市| 布拖县| 平安县| 咸阳市| 福泉市| 卫辉市| 林口县| 元江| 彩票| 宣汉县| 和田县| 都江堰市| 长葛市| 侯马市| 昂仁县| 富裕县| 元谋县| 繁昌县| 澄迈县| 视频| 乌兰察布市| 石泉县| 清水河县| 海安县| 湖州市| 珲春市| 原平市| 阿城市| 平顺县| 司法| 黔东| 澄城县| 河池市| 宝清县| 安西县| 五家渠市| 通山县| 拉萨市|