2016-11-24 73 views
3

在Elasticsearch索引中,我有幾個引用主類別ID的字段(例如sector_id,country_id等)。什麼是ElasticSearch 5聚合中使用的最合適的數據類型:數字或關鍵字?

這些字段僅用於過濾(使用術語/術語過濾器)以及以聚合(等等)術語創建桶。

它們中的每一個當前正在使用最小的合適的數值數據類型(例如字節,短,等等。)

這是要對這些用於重聚合的最佳數據類型?

或者應該使用關鍵字數據類型?

在此先感謝您的任何建議!

回答

2

如果這些字段的值是數字,則應該使用數字類型(如果它們是字符串),然後使用關鍵字類型。

有一點要記住的是,如果你想在某個點上運行這些領域range查詢和/或range聚合,你應該更喜歡使用數字型鋒線,這樣的值可以以數字和不排序詞彙。例如:如果您的國家ID爲1,2,3,...,10,11,12,...,20,...並且它們被映射爲關鍵字(即字符串),那麼如果你對它們使用from: 1, to: 3對它們運行range查詢(或聚合),你還會得到11,12,13等,因爲在字符串世界中,11在詞法上小於3.

+0

非常感謝回覆@瓦爾! 在這種情況下,我不打算在這些字段上進行任何類型的數字/範圍操作(它們僅用作唯一標識符),並且更關心大量聚合的實際性能。 你仍然建議堅持數字類型的性能? 再次感謝! –

+0

由於答案取決於更多的因素,而不僅僅是領域的類型,如果你的聚合真的很重,我認爲值得一試,並嘗試兩種解決方案(無論如何你應該做的),你會看到立即什麼效果最好。 – Val

+0

根據您的使用情況,還有可能採用一些混合方法(數字+關鍵字)。在此處查看更多詳細信息:https://www.elastic.co/guide/en/elasticsearch/reference/current/tune-for-search-speed.html#_pre_index_data – Val

相關問題