2016-02-29 18 views
1

我正在使用ES版本2.2.0ElasticSearch类型从长变为双重

我有一个字段可能有长或双值。 如何使ElasticSearch强制将长整型值加倍,以便在插入新文档时不会发生冲突?

例如,如果值是5,我希望ES将它强制为5.0,以便我可以在之后插入12.3。

是否有某种动态索引模板可以应用于插入时自动进行转换?

感谢您的帮助。

回答

3

您可以在映射中简单地将该字段的类型设置为double并执行该作业。任何你会进入该领域的东西都会被强制转化为双倍。

curl -XPUT localhost:9200/index -d '{ 
    "mappings": {  
    "type": { 
     "properties": { 
      "myfield": { 
       "type": "double" 
      } 
     } 
    } 
    } 
}' 

你需要做的,在指数/映射创建时间,否则映射创建后不能更改类型。

UPDATE

您还可以利用dynamic mapping templates这样的:

PUT my_index 
{ 
    "mappings": { 
    "my_type": { 
     "dynamic_templates": [ 
     { 
      "doubles": { 
      "match_mapping_type": "long", 
      "mapping": { 
       "type": "double" 
      } 
      } 
     } 
     ] 
    } 
    } 
} 
+0

我想比这对于领域更敏捷。通过动态索引模板可以做到这一点? –

+0

我已经更新了我的答案 – Val