Elasticsearch 2.3放置映射(尝试覆盖日期字段类型)错误

时间:2016-05-26 22:45:35

标签: elasticsearch elasticsearch-mapping

我有一些我想作为字符串存储的birth_dates。我不打算对数据进行任何查询或分析,我只想存储它。

我给出的输入数据有很多不同的随机格式,有些甚至还包括像(approximate)这样的字符串。 Elastic已经确定这应该是一个带有日期格式的日期字段,这意味着当弹性接收到像1981 (approx)这样的日期时,它会吓坏并说输入的格式无效。

我希望将日期类型更改为字符串,而不是更改输入日期。

我查看了文档并尝试使用PUT映射API更新映射,但弹性会不断返回解析错误。

基于此处的文档:

  

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html

我试过了:

PUT /sanctions_lists/eu_financial_sanctions/_mapping
{
    "mappings":{
        "eu_financial_sanctions":{
         "properties": {
             "birth_date": {
                 "type": "string", "index":"not_analyzed"
             }
         }
       }
    }
 }

但返回:

{
   "error": {
      "root_cause": [
         {
            "type": "mapper_parsing_exception",
            "reason": "Root mapping definition has unsupported parameters:  [mappings : {eu_financial_sanctions={properties={birth_date={type=string, index=not_analyzed}}}}]"
         }
      ],
      "type": "mapper_parsing_exception",
      "reason": "Root mapping definition has unsupported parameters:  [mappings : {eu_financial_sanctions={properties={birth_date={type=string, index=not_analyzed}}}}]"
   },
   "status": 400
}

问题摘要

是否可以覆盖elasticsearch自动确定的日期字段,强制字符串作为字段类型?

注意

我正在使用Google Chrome感知插件发送请求

弹性搜索版本为2.3

1 个答案:

答案 0 :(得分:-1)

只需从url中删除类型引用和映射,就可以在请求体内部使用它们。 More examples.

PUT /sanctions_lists
{
    "mappings":{
        "eu_financial_sanctions":{
         "properties": {
             "birth_date": {
                 "type": "string", "index":"not_analyzed"
             }
         }
       }
    }
}