【发布时间】:2016-02-29 15:30:15
【问题描述】:
我使用的是 ES 版本 2.2.0
我有一个字段可能有 long 或 double 值。 如何使 ElasticSearch 强制 long 值加倍,以便在插入新文档时不会发生冲突?
例如,如果值为 5,我希望 ES 将其强制转换为 5.0,以便之后插入 12.3。
我可以应用某种动态索引模板来在插入时自动进行转换吗?
感谢您的帮助。
【问题讨论】:
标签: elasticsearch
我使用的是 ES 版本 2.2.0
我有一个字段可能有 long 或 double 值。 如何使 ElasticSearch 强制 long 值加倍,以便在插入新文档时不会发生冲突?
例如,如果值为 5,我希望 ES 将其强制转换为 5.0,以便之后插入 12.3。
我可以应用某种动态索引模板来在插入时自动进行转换吗?
感谢您的帮助。
【问题讨论】:
标签: elasticsearch
您只需在映射中将该字段的类型设置为double 即可完成工作。您输入该字段的任何内容都会被强制转换为双重。
curl -XPUT localhost:9200/index -d '{
"mappings": {
"type": {
"properties": {
"myfield": {
"type": "double"
}
}
}
}
}'
您需要在创建索引/映射时执行此操作,否则在创建映射后您无法更改类型。
更新
您也可以像这样利用dynamic mapping templates:
PUT my_index
{
"mappings": {
"my_type": {
"dynamic_templates": [
{
"doubles": {
"match_mapping_type": "long",
"mapping": {
"type": "double"
}
}
}
]
}
}
}
【讨论】: