2016-01-07 31 views
0

我看到一個奇怪的錯誤,其中當我使用kafka作爲logstash配置中的輸入並將elasticsearch用作輸出時。我可以送一個JSON對象,如下列:logstash 1.5.3無法使用浮點數而不是int索引相同的json

{ 
"user": "foo" 
"amount": 1 
} 

但是,當它試圖寫入:

{ 
"user": "foo" 
"amount": 0.1 
} 

它失敗 :message=>"failed action with response of 400, dropping action:

那就是之間的唯一區別兩個文件。它吐出一個錯誤,分類金額如下: \"amount\"=>#<BigDecimal:37335f46,'0.15197E3',5(8)>

我找不到任何通過互聯網搜索這個問題的例子。有趣的是,當我手動捲曲到POST文檔都工作。當金額爲BigDecimal時,Logstash似乎失敗

+1

你能解釋你如何填充卡夫卡?你在Kafka中存儲純JSON還是其他一些序列化格式(如Avro等)?從logstash配置中分享有什麼有趣的東西? – Val

+0

你還在使用什麼版本的Elasticsearch? – Val

回答

0

如果您未指定映射,則elasticsearch根據第一個輸入進行猜測。

如果第一個輸入是整數,則該字段將是一個整數。試圖把一個小數看成一個整數似乎是不允許的(但我會想象,相反將是確定的)。

檢查您的現場映射。

請注意,您可以在logstash中設置字段類型,無論是grok模式還是mutate-> convert。這不會改變現有的索引,但會用於後續的新索引。

+0

這不是問題,因爲即使首先輸入一個整數,也會給它一個「數字」而不是「整數」的映射。任何其他想法? –

相關問題