elasticsearch,mapping,customizing,Dynamic,elasticsearch,Mapping,Customizing" /> elasticsearch,mapping,customizing,Dynamic,elasticsearch,Mapping,Customizing" />

Dynamic Elasticsearch动态映射将全部转换为字符串(使用Javascript客户端)

Dynamic Elasticsearch动态映射将全部转换为字符串(使用Javascript客户端),dynamic,elasticsearch,mapping,customizing,Dynamic,elasticsearch,Mapping,Customizing,在这种情况下,我需要导入大量不同的数据,这些数据最终可能会产生冲突的数据类型。我已决定将所有内容转换为字符串,然后在需要数据时再转换回来。我不知道如何使用javascript客户端使用ElasticSearchs(ES)动态映射来实现这一点 ES在他们的文档中说: { "mappings": { "my_type": { "dynamic_templates": [ { "es": {

在这种情况下,我需要导入大量不同的数据,这些数据最终可能会产生冲突的数据类型。我已决定将所有内容转换为字符串,然后在需要数据时再转换回来。我不知道如何使用javascript客户端使用ElasticSearchs(ES)动态映射来实现这一点

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结尾的字符串字段”。
“匹配所有其他字符串字段”:

这是我尝试过的,但没有将all转换为字符串(也尝试过在通配符周围不加引号):

我还尝试了
“匹配映射类型”:“*”

我尝试过:
esClient.index.putMapping({index:“myindex”,type:“mytype”,body:mybody})
在响应中和.create函数外部。
有什么提示吗?

您的映射应该如下所示

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"
               }
            }
         }
      }
   }
}

谢谢你@Andrei Stefan。我使用的是ES javascript客户端,这也是问题的一部分。我忘了在我的帖子里提到这个。我尝试添加:esClient.index.putMapping({index:myindex),type:mytype,body:mybody});在响应和直接创建函数之后,但仍然不起作用。我可以从ES的角度帮助您,但还没有使用javascript客户端。
{
   "test": {
      "mappings": {
         "test": {
            "dynamic_templates": [
               {
                  "en": {
                     "mapping": {
                        "type": "string"
                     },
                     "match": "*"
                  }
               }
            ],
            "properties": {
               "bool": {
                  "type": "string"
               },
               "jsonDate": {
                  "type": "string"
               },
               "nr": {
                  "type": "string"
               }
            }
         }
      }
   }
}