【问题标题】:Elasticsearch 5.4.0 - How to add new field to existing documentElasticsearch 5.4.0 - 如何向现有文档添加新字段
【发布时间】:2020-02-26 14:40:26
【问题描述】:

在生产中,我们已经有 2000 多个文档。我们需要在现有文档中添加新字段。是否可以添加新字段?如何将新字段添加到现有字段

【问题讨论】:

  • 您可以毫无问题地添加新字段。新字段是否对所有文档都具有相同的值?
  • 您的意思是新文档将有一个额外的字段,还是旧文档需要添加一个新的、非空的字段?第二种情况,现有文档的新字段应该放什么?
  • @val.. 只是我们需要添加没有值的新字段.. 如何在单个 API 调用中为所有文档添加新字段?

标签: elasticsearch elasticsearch-5


【解决方案1】:

您可以使用update by query API 向所有现有文档添加新字段:

POST your_index/_update_by_query
{
  "query": {
    "match_all": {}
  },
  "script": {
    "inline": "ctx._source.new_field = 0",
    "lang": "painless"
  }
}

注意:如果您的新字段是字符串,请将 0 改为 ''

【讨论】:

  • 您应该小心,因为您使用的值将用于确定字段的类型。此外,动态添加字段的功能默认启用,但可能已在配置中禁用。
  • @Val 如果您的新字段是字符串,请将 0 改为 '' 。如果地理位置中有新字段怎么办?
  • @Nusrath 随意用你的具体例子提出一个新问题,并从这里引用它
  • @Val 嵌套字段怎么做?
【解决方案2】:

我们也可以使用curl添加新字段,直接在终端运行如下命令。

curl -X PUT "localhost:9200/you_index/_mapping/defined_mapping" -H 'Content-Type: application/json' -d '{ "properties":{"field_name" : {"type" : type_of_data}} }' 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-21
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 2012-10-27
    相关资源
    最近更新 更多