elasticsearch 将日期检测添加到现有索引+现有Map中

vql8enpb  于 12个月前  发布在  ElasticSearch
关注(0)|答案(1)|浏览(167)

我已经为我的PRODUCT索引创建了以下Map,我已经激活了它的数字检测。

{
  "product": {
    "mappings": {
      "numeric_detection": true,
      "properties": {
        "my_float": {
          "type": "float"
        },
        "my_integer": {
          "type": "long"
        }
      }
    }
  }
}  <br><Br>

字符串
当我想在同一索引上启用日期检测时,我得到以下错误

{
  "error": "Incorrect HTTP method for uri [/product?pretty=true] and method [POST], allowed: [PUT, DELETE, GET, HEAD]",
  "status": 405
}<br><br>


以下是我用来启用日期检测的弹性命令

post product
{
  "mappings":
  {
    "dynamic_date_fromats":
    [
      "yyyy-MM-dd HH:mm:ss",
      "yyyy-MM-dd",
      "yyyy/MM/dd HH:mm:ss",
      "yyyy/MM/dd"
    ],
     "date_detection":true
  }
}


我不想创建一个新的索引与新的Map,它将包含日期检测和数字检测。我只是想知道它是否有任何方法来更新它,而无需我们重新创建一切了吗?我知道,我们可以更新properties部分,如果我们有新的领域,我们要添加它,但我不确定的数字检测和日期检测

xtupzzrd

xtupzzrd1#

你点击的URL是用来创建一个新的索引的。如果索引已经创建,你只想修改Map,你只需要调用PUT Mapping API,它只会更新现有的Map参数:

PUT product/_mapping
{
    "dynamic_date_formats":
    [
      "yyyy-MM-dd HH:mm:ss",
      "yyyy-MM-dd",
      "yyyy/MM/dd HH:mm:ss",
      "yyyy/MM/dd"
    ],
     "date_detection":true
}

字符串
注意:更新MapAPI不允许对现有Map进行任何更改,只允许进行某些更改
另外值得注意的是,默认情况下启用date_detection。默认支持的日期格式是[ "strict_date_optional_time","yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"]

相关问题