第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

多線程中elasticsearch插入時(shí)如何保證唯一性?

多線程中elasticsearch插入時(shí)如何保證唯一性?

繁星淼淼 2023-12-13 16:27:04
我們有一些elasticsearch的文檔。文檔的唯一性是由一些字段共同決定的,java多線程判斷是否存在和插入時(shí)如何保證唯一性。之前不知道有什么好的方法,所以就寫了一個(gè)方法:我猜是否存在,如果不存在我就插入,這個(gè)方法是通過syncronized來修改的。但我發(fā)現(xiàn)這是一種非常低效的做法。/** * @param document */synchronized void selectAndInsert(Map<String, Object> document){    //Determine if it exists, insert it if it does not exist}我的映射如下: {"properties":{"pt_number":{ "type":"keyword" }, "pt_name":{"type":"keyword" },"pt_longitude":{ "type":"文本"},"pt_latitude":{"type":"text" },"rd_code":{ "type":"text" }, "rd_name":{ "type":"keyword"}, "area_code": {“類型”:“關(guān)鍵字”} ...等等 }}唯一性由area_code、pt_longitude 和pt_latitude 確定。插入文檔時(shí)我會(huì)根據(jù)area_code、pt-longitude、pt_latitude判斷是否存在,不存在則插入。java多線程運(yùn)行時(shí)如何保證文檔的唯一性?這個(gè)問題困擾了我一段時(shí)間。誰能幫助我,我將非常感激。
查看完整描述

3 回答

?
千萬里不及你

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊

僅通過索引中的屬性無法以任何方式保證不存在此類文檔。即使您檢查它是否存在于索引中但沒有看到它,從發(fā)出該操作的響應(yīng)到 ES 接受您的索引請(qǐng)求之間也存在一段時(shí)間。

所以基本上你只有兩種方法:

  • 保證索引操作的單次執(zhí)行(漫長(zhǎng)且不那么簡(jiǎn)單的方法,因?yàn)槲覀儧]有一次性系統(tǒng))

  • 將文檔唯一屬性轉(zhuǎn)換為文檔 ID,因此即使索引操作重疊,它們也只會(huì)將相同的值寫入同一文檔(或者第二個(gè)及后續(xù)操作將失敗,具體取決于請(qǐng)求選項(xiàng))。

后一個(gè)非常簡(jiǎn)單,您有一些開箱即用的選項(xiàng):

  • 按確定的順序獲取所有唯一屬性并連接它們的字符串表示形式(丑陋)

  • 按確定的順序獲取所有唯一屬性,連接它們的字節(jié)值并使用 Base64 進(jìn)行編碼(不太難看)

  • 按確定的順序獲取所有唯一屬性,將它們傳遞給散列函數(shù)(md5、sha-X 系列,無論您喜歡什么)并使用結(jié)果的字符串表示形式。


查看完整回答
反對(duì) 回復(fù) 2023-12-13
?
九州編程

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊

常見的情況可能是您以某種方式發(fā)送了文檔(例如 kafka)并希望確保沒有重復(fù)項(xiàng)。據(jù)我所知,ElasticSearch 中沒有這樣的方法,盡管你可以在這里嘗試一個(gè)技巧:

  • ElasticSearch 允許指定自定義文檔 ID

  • 文檔ID的長(zhǎng)度被限制為512字節(jié),不能用于正常的“處理”

您可能希望根據(jù)您的字段(如數(shù)據(jù)庫中的主鍵)創(chuàng)建一個(gè) ID。如果使用 _create ,那么僅當(dāng)您的文檔尚不存在時(shí)才會(huì)創(chuàng)建它。

但還有一些問題需要解決:如何生成ID?簡(jiǎn)單的串聯(lián)可以工作,但前提是您確定總長(zhǎng)度不會(huì)超過 512B。否則可以使用校驗(yàn)和 - 但沖突的可能性很小。如果收到幾乎相同的文檔該怎么辦(您的密鑰相同,但存在其他一些差異)。Elastic 只允許“替換”或“不替換”。您需要處理其他場(chǎng)景。


查看完整回答
反對(duì) 回復(fù) 2023-12-13
?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊

如果您檢測(cè)到插入,為什么不在插入完成后(和索引刷新...)檢查是否沒有重復(fù)項(xiàng)。第二種解決方案是使用批量插入更新數(shù)據(jù)包寫入每個(gè) X(= 將新文檔存儲(chǔ)在共享區(qū)域的列表中,因此您可以檢查您的文檔是否尚未存在,并每 10 秒寫入此列表例子)。



查看完整回答
反對(duì) 回復(fù) 2023-12-13
  • 3 回答
  • 0 關(guān)注
  • 302 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)