在修改现有的Elasticsearch映射的同时在字段上添加默认值

时间:2019-07-12 09:49:00

标签: elasticsearch

假设我有一个Elasticsearch索引,上面有大约1000万个文档。现在,我需要为每个ES文档添加一个具有默认值的新文件,例如is_hotel_type=0。稍后,我将根据我的要求进行更新。

为此,我使用如下所示的PUT请求修改了myindex-

PUT myindex
{
  "mappings": {
    "rp": {
      "properties": {
        "is_hotel_type": {
          "type": "integer" 
        }
      }
    }
  }
}

然后使用POST运行无痛脚本查询,以更新值为is_hotel_type=0的所有现有文档

POST myindex/_update_by_query
{
  "query": {
    "match_all": {}
  },
  "script" : "ctx._source.is_hotel_type = 0;"
}

但是对于拥有1000万个文档的大型索引,此过程非常耗时。通常,我们可以在创建新列时在SQL上设置默认值。所以我的问题是 Elasticsearch 中有什么办法,所以我可以添加一个默认值的新字段。我尝试在null_value下面的PUT请求下使用,但不适用于该字段。

PUT myindex/_mapping/rp
{
  "properties": {
        "is_hotel_type": {
          "type": "integer",
           "null_value" : 0 
        }
      }
}

我只想知道没有 script 查询还有其他方法吗?

0 个答案:

没有答案