假设我有一个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 查询还有其他方法吗?