,我想索引的文件是如下這個節點下爲什麼elasticsearch動態模板在映射中創建顯式字段?
{
"Under Armour": 0.16667,
"Skechers": 0.14774,
"Nike": 0.24404,
"New Balance": 0.11905,
"SONOMA Goods for Life": 0.11236
}
域是動態的,當文件被獲取添加各種領域(品牌),這意味着將帶着這些文件。
如果我在不指定映射的情況下創建索引,ES表示「已達到最大字段數(1000)」。雖然我們可以增加這個價值,但這不是一個好習慣。
爲了支持上述文檔,我創建瞭如下映射並創建了索引。
{
"mappings": {
"my_type": {
"dynamic_templates": [
{
"template1":{
"match_mapping_type": "double",
"match": "*",
"mapping": {
"type": "float"
}
}
}
]
}
}
}
當我將上面的文檔添加到創建的索引並再次檢查索引的映射。它看起來像下面。
{
"my_index": {
"mappings": {
"my_type": {
"dynamic_templates": [
{
"template1": {
"match": "*",
"match_mapping_type": "double",
"mapping": {
"type": "float"
}
}
}
],
"properties": {
"New Balance": {
"type": "float"
},
"Nike": {
"type": "float"
},
"SONOMA Goods for Life": {
"type": "float"
},
"Skechers": {
"type": "float"
},
"Under Armour": {
"type": "float"
}
}
}
}
}
}
如果您清楚地看到之前創建的映射以及向索引添加文檔時的映射不同。它添加了靜態添加到映射的字段。當我繼續添加更多的文檔時,新的字段將被添加到映射中(最終將達到最大字段數(1000))。
我的問題是,
- 我上面提到的映射是正確的上述文件。
- 如果這是正確的,爲什麼新的字段被添加到映射?
在映射你只有根據新的字段類型指定一個動態模板。這只是一種簡單的快捷方式,可以防止您手動添加數十個/數百個字段,但ES會在您的文檔中看到新字段時仍會修改映射。 – Val
@Val感謝您的回覆。爲了遵守這些文件,什麼纔是正確的映射? – udayanga
您的映射是正確的,如果您知道最終會有超過1000個字段,那麼您需要增加該限制或將數據劃分爲差異索引。 – Val