2017-08-11 33 views
1

我有文件,其中一些條款可能包含數千個可能值(這是不同的 - 跨區域)Elasticsearch大項詞典

例如:

{ 
 
    "term_1":["ssd2dfff","ds2fefd","zwdfdf",...], 
 
    "term_2":["amm22d3ff","amm2daccfd","man2ewfsd",...] 
 
    
 
}

我擔心這會造成大字典並可能導致性能影響

+0

這裏有什麼問題?將這些文檔存儲到Elasticsearch是可以的,但執行這些條款查詢則是另一回事。 – NikoNyrh

+0

我想了解一個非常大的語言語料庫有什麼影響。 我很想知道使用哪種算法從索引/段中查找術語 –

回答

0

沒有真正在這裏得到問題。由於成千上萬的可能性,您可能擔心它會在任何給定的點上崩潰。我不知道是否會出現這種情況,但這article這裏可能會有助於你瞭解什麼可能或可能不會在Elasticsearch工作

+0

感謝您的快速回復。 我擔心索引這個術語會包含很多術語(可能比中文語料庫更大) 我很想知道使用哪種算法從索引/片段查找術語 –

0

正如其他答案指出的,一個大問題可以是mapping explosion。當每個記錄中有一些模式或隨機生成的密鑰時,會發生這種情況。如果你有嵌套的深層結構,它會變得最糟糕。這種爆炸背後的原因是elasticsearch以元數據的形式存儲每種類型的映射,其中每個鍵都有其數據類型存儲。在我的情況下,記錄看起來像下面和製造的問題

{ 
    "term1": { 
    "04980000002RxJ9": 0.5833333333333334, 
    "04980000002RxJB": 0.4166666666666667 
    }, 
    "term2": { 
    "04980000002RxJ9": "ARR", 
    "04980000002RxJA": "Services", 
    "04980000002RxJB": "Renewals" 
    } 
} 

但是你的數據看起來不錯,除非你沒有字詞1,詞條2,TERM3 ......怎麼回事作爲一個系列。你不必擔心字典中的值,因爲如果它的數組不在意值。

+0

您能詳細說明一下嗎? ? 搜索一個術語作爲術語語料庫大小的計算懲罰是什麼? –