ElasticSearch类型强制从长到两倍

时间:2016-02-29 15:30:15

标签: elasticsearch

我使用的是ES 2.2.0版本

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

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

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您只需在映射中将该字段的类型设置为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"
            }
          }
        }
      ]
    }
  }
}