2015-10-16 43 views
1

我有一個情況我需要導入一堆最終可能有衝突的數據類型不同的數據。我決定一切轉換爲字符串,然後後,如果需要將數據轉換回。我無法弄清楚如何使用JavaScript客戶端Elasticsearches(ES)做動態映射。Elasticsearch動態映射轉換所有字符串(使用JavaScript客戶端)

什麼ES說,在他們的文檔:

{ 
    "mappings": { 
     "my_type": { 
      "dynamic_templates": [ 
       { "es": { 
         "match":    "*_es", 
         "match_mapping_type": "string", 
         "mapping": { 
          "type":   "string", 
          "analyzer":  "spanish" 
         } 
       }}, 
       { "en": { 
         "match":    "*", 
         "match_mapping_type": "string", 
         "mapping": { 
          "type":   "string", 
          "analyzer":  "english" 
         } 
       }} 
      ] 
}}} 
在他們的文檔

它說:「匹配字符串字段_es其名稱結尾」。
「匹配所有其他字符串字段」:https://www.elastic.co/guide/en/elasticsearch/guide/current/custom-dynamic-mapping.html

這是我嘗試過,但沒有全部轉換爲字符串(也試着周圍沒有通配符引號):

event.mappings = { 
     "mytype": { 
      "match": "*", 
      "mapping": { 
       "type": "string" 
      } 
     } 
    } 

我已經也試過"match_mapping_type" : "*"

我試過了:esClient.indices.putMapping({index:"myindex", type:"mytype", body:mybody}) 在響應和.create函數之外。 任何提示?

回答

0

你的映射看起來應該像這樣

PUT /test 
{ 
    "mappings": { 
    "test": { 
     "dynamic_templates": [ 
     { 
      "en": { 
      "match": "*", 
      "mapping": { 
       "type": "string" 
      } 
      } 
     } 
     ] 
    } 
    } 
} 

測試數據:

POST /test/test/1 
{ 
    "nr": 1, 
    "jsonDate":"2015-06-08T03:41:12-05:00", 
    "bool": true 
} 

產生的映射,由ES所見:

{ 
    "test": { 
     "mappings": { 
     "test": { 
      "dynamic_templates": [ 
       { 
        "en": { 
        "mapping": { 
         "type": "string" 
        }, 
        "match": "*" 
        } 
       } 
      ], 
      "properties": { 
       "bool": { 
        "type": "string" 
       }, 
       "jsonDate": { 
        "type": "string" 
       }, 
       "nr": { 
        "type": "string" 
       } 
      } 
     } 
     } 
    } 
} 
+0

謝謝@Andrei斯特凡。我正在使用ES javascript客戶端,這是問題的一部分。我忘了在我的帖子中提到這一點。我已經嘗試添加:esClient.indices.putMapping({索引: 「myindex」,類型: 「MYTYPE」,體:mybody});在響應中並直接在創建函數之後,但仍然不起作用。 – benishky

+0

我可以幫助你從來看ES來看,還沒有使用JavaScript客戶端,雖然。 –