弹性搜索更新映射

时间:2016-03-14 22:06:59

标签: elasticsearch

我在弹性搜索中为对象创建了错误的映射。有没有办法更新映射。对于对象的类型(String而不是double)错误地创建了映射。

3 个答案:

答案 0 :(得分:1)

通常,无法更新现有字段的映射。这条规则有一些例外。例如:

new properties can be added to Object datatype fields.
new multi-fields can be added to existing fields.
doc_values can be disabled, but not enabled.
the ignore_above parameter can be updated.

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

答案 1 :(得分:0)

通过PUT现有的here are some examples上的新映射,完全有可能。

请注意,在完成此操作后,您可能需要重新索引所有数据,因为我不认为ES可以将字符串索引转换为双索引。 (相反的是,当您在该字段中搜索时,您将找不到任何文档)

答案 2 :(得分:0)

PUT映射API允许您在现有索引中添加/修改数据类型。

PUT /assets/asset/_mapping
{  
  "properties": {
    "common_attributes.asset_id": {
      "type": "text",
      "fields": {
        "keyword": { 
          "type":  "keyword",
          "doc_values": true,
          "normalizer": "lowercase_normalizer"
        }
      }
    },
  }
}

更新映射后,使用批量更新API更新现有文档。

POST /_bulk
{"update":{"_id":"59519","_type":"asset","_index":"assets"}}
{"doc":{"facility_id":491},"detect_noop":false}

注意-使用'detect_noop'检测noop更新。