2017-04-24 519 views
0

比方說,我想存儲像下面的一個文件:Elasticsearch - 枚舉數據類型

{ 
    "item_id": 1, 
    "item_price": 500, 
    "currency": "USD" 
} 

我想貨幣字段要像ENUM,所以我可以預先設定值,如:「USD」 「GBP」,「EUR」等等......

我也想每個值會涉及到一個整數,像哈希映射,所以設定值將是這樣的:

{ "USD":1, "GBP":2, "EUR":3 } 

我怎麼用shell來映射這個字段?

回答

2

您需要聲明的枚舉在索引代碼和文檔應非規範化是這樣的:

{ 
    "item_id": 1, 
    "item_price": 500, 
    "currency": "USD", 
    "currency_id": 1 
} 

對於數據類型,我建議申報currency場爲keywordcurrency_id字段byteshort,具體取決於您需要跟蹤的貨幣數量。

+0

好的,謝謝。但是,我能否提前定義一組貨幣(字符串),因此如果我輸入的貨幣不屬於該集合(例如,「USF」),elasticsearch會識別我的錯誤?另一件事,根據你的例子,我可以錯誤地輸入ID爲2的「USD」。 – TVC

+0

ES有一個打字系統,允許你定義映射類型,但是不會進行你描述的那種檢查。您需要確保您的索引代碼健全且一致。單元測試它;-) – Val

+0

好吧,那麼使這個字段'關鍵字'類型而不是'字符串'類型有什麼好處。 – TVC