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