2015-10-16 59 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客户端,虽然。 –