讓我先解釋一下我的場景。 我正在從RDBMS中獲取數據並將其推入ElasticSearch。 讀取的結果是在列表的形式,並且我正在準備這樣散裝索引請求:ElasticSearch字段在索引時默認映射爲字符串
BulkRequestBuilder bulkRequest = client.prepareBulk();
for (Map<String,Object> singleDataRow : ResultSet)
{
IndexRequest indexRequest = new IndexRequest("testindex","testtype",singleDataRow.getObject("NAME"));
bulkRequest.add(indexRequest);
}
bulkRequest.execute().actionGet();
我的地圖=包括字符串的地圖字符串,字符串大十進制數,字符串到整數大等 例如。
{ BIRTHDATE : 2015-03-05 , NAME : deepankar , AGE : 22 , AMOUNT : 15.5 }
但是,當我看到我在testindex testtype的映射,字段的所有映射爲「A型」的:「串」
爲什麼領域沒有映射到「類型」:「串」 ,或「類型」:「長」,甚至「類型」:「日期」作爲彈性搜索默認做?
謝謝你們的答覆。 其實我在調用 'code' indexRequest(singleDataRow);之前輸出了singleDataRow(MAP); 'code' like this: 'code' System.out.println(singleDataRow.get(「AGE」)。getClass()); '代碼' 它返回我: java.math.BigDecimal –
您插入到您的索引中的第一個文檔可能是使用字符串而不是整數/浮動嗎?無論如何,刪除索引,創建和使用映射API來設置字段類型,然後插入文檔。 –
我沒有創建任何索引。 我執行'DELETE _all'使用意義,並運行我的java代碼, ,當我GET'testindex/_mapping':所有字段都有字符串作爲它們的類型! –