elasticsearch的doc_values-創(chuàng)新互聯(lián)

Doc Values 是什么

為浚縣等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及浚縣網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、??h網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

其實(shí)大部分 NoSQL在創(chuàng)建多個(gè)索引的時(shí)候也采用這種方式,就是再使用另一種方式存儲(chǔ)一份文本,使得可以增強(qiáng)搜索。 Docvalues 通過轉(zhuǎn)置兩者間的關(guān)系來解決這個(gè)問題。倒排索引將詞項(xiàng)映射到包含它們的文檔, Docvalues 將文檔映射到它們包含的詞項(xiàng):

Doc??????Terms-----------------------------------------------------------------Doc_1?|?brown,?dog,?fox,?jumped,?lazy,?over,?quick,?the
Doc_2?|?brown,?dogs,?foxes,?in,?lazy,?leap,?over,?quick,?summer
Doc_3?|?dog,?dogs,?fox,?jumped,?over,?quick,?the-----------------------------------------------------------------

當(dāng)數(shù)據(jù)被轉(zhuǎn)置之后,想要收集到每個(gè)文檔行,獲取所有的詞項(xiàng)就非常簡單了。所以搜索使用倒排索引查找文檔,聚合操作收集和聚合 DocValues 里的數(shù)據(jù),這就是 ElasticSearch。

????深入理解 ElasticSearch Doc Values

DocValues 是在索引時(shí)與倒排索引同時(shí)生成。也就是說 DocValues倒排索引一樣,基于 Segement 生成并且是不可變的。同時(shí) DocValues倒排索引一樣序列化到磁盤,這樣對(duì)性能和擴(kuò)展性有很大幫助。

DocValues 通過序列化把數(shù)據(jù)結(jié)構(gòu)持久化到磁盤,我們可以充分利用操作系統(tǒng)的內(nèi)存,而不是 JVMHeap 。 當(dāng) workingset 遠(yuǎn)小于系統(tǒng)的可用內(nèi)存,系統(tǒng)會(huì)自動(dòng)將 DocValues 保存在內(nèi)存中,使得其讀寫十分高速; 不過,當(dāng)其遠(yuǎn)大于可用內(nèi)存時(shí),操作系統(tǒng)會(huì)自動(dòng)把 DocValues 寫入磁盤。很顯然,這樣性能會(huì)比在內(nèi)存中差很多,但是它的大小就不再局限于服務(wù)器的內(nèi)存了。如果是使用 JVMHeap來實(shí)現(xiàn)那么只能是因?yàn)?OutOfMemory 導(dǎo)致程序崩潰了。

Doc Values 壓縮

從廣義來說, DocValues 本質(zhì)上是一個(gè)序列化的 列式存儲(chǔ),這個(gè)結(jié)構(gòu)非常適用于聚合、排序、腳本等操作。而且,這種存儲(chǔ)方式也非常便于壓縮,特別是數(shù)字類型。這樣可以減少磁盤空間并且提高訪問速度。下面來看一組數(shù)字類型的 DocValues

Doc??????Terms??-----------------------------------------------------------------
??Doc_1?|?100
??Doc_2?|?1000
??Doc_3?|?1500
??Doc_4?|?1200
??Doc_5?|?300
??Doc_6?|?1900
??Doc_7?|?4200
??-----------------------------------------------------------------

你會(huì)注意到這里每個(gè)數(shù)字都是 100 的倍數(shù), DocValues 會(huì)檢測(cè)一個(gè)段里面的所有數(shù)值,并使用一個(gè) 大公約數(shù) ,方便做進(jìn)一步的數(shù)據(jù)壓縮。我們可以對(duì)每個(gè)數(shù)字都除以 100,然后得到: [1,10,15,12,3,19,42] ?,F(xiàn)在這些數(shù)字變小了,只需要很少的位就可以存儲(chǔ)下,也減少了磁盤存放的大小。

DocValues 在壓縮過程中使用如下技巧。它會(huì)按依次檢測(cè)以下壓縮模式:

  • 如果所有的數(shù)值各不相同(或缺失),設(shè)置一個(gè)標(biāo)記并記錄這些值

  • 如果這些值小于 256,將使用一個(gè)簡單的編碼表

  • 如果這些值大于 256,檢測(cè)是否存在一個(gè)大公約數(shù)

  • 如果沒有存在大公約數(shù),從最小的數(shù)值開始,統(tǒng)一計(jì)算偏移量進(jìn)行編碼

當(dāng)然如果存儲(chǔ) String類型,其一樣可以通過順序表對(duì) String類型進(jìn)行數(shù)字編碼,然后再把數(shù)字類型構(gòu)建 DocValues。

禁用 Doc Values

DocValues 默認(rèn)對(duì)所有字段啟用,除了 analyzed strings。也就是說所有的數(shù)字、地理坐標(biāo)、日期、IP 和不分析( not_analyzed)字符類型都會(huì)默認(rèn)開啟。

analyzed strings 暫時(shí)還不能使用 DocValues,是因?yàn)榻?jīng)過分析以后的文本會(huì)生成大量的 Token,這樣非常影響性能。

雖然 DocValues非常好用,但是如果你存儲(chǔ)的數(shù)據(jù)確實(shí)不需要這個(gè)特性,就不如禁用他,這樣不僅節(jié)省磁盤空間,也許會(huì)提升索引的速度。

要禁用 DocValues ,在字段的映射(mapping)設(shè)置 doc_values:false 即可。例如,這里我們創(chuàng)建了一個(gè)新的索引,字段 "session_id" 禁用了 DocValues

PUT?my_index{
??"mappings":?{
????"my_type":?{
??????"properties":?{
????????"session_id":?{
??????????"type":???????"string",
??????????"index":??????"not_analyzed",
??????????"doc_values":?false?
????????}
??????}
????}
??}}

通過設(shè)置 doc_values:false ,這個(gè)字段將不能被用于聚合、排序以及腳本操作

同樣可以禁用倒排索引,使它不能被正常搜索,但是可以排序,例如:

PUT?my_index{
??"mappings":?{
????"my_type":?{
??????"properties":?{
????????"customer_token":?{
??????????"type":???????"string",
??????????"index":??????"not_analyzed",
??????????"doc_values":?true,?
??????????"index":?"no"?
????????}
??????}
????}
??}}

通過設(shè)置 doc_values:trueindex:no ,我們得到一個(gè)只能被用于聚合/排序/腳本的字段。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享名稱:elasticsearch的doc_values-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://www.muchs.cn/article8/pgjip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站內(nèi)鏈、做網(wǎng)站網(wǎng)站排名、外貿(mào)建站、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)