Elasticsearch - 从结构中删除字段
Elasticsearch - Remove field from a structure
我正在使用 Elasticsearch 6.5。
比方说,我的 Elasticsearch 文档如下所示:
"_source" : {
"field1" : "val1",
"field2" : "val2",
"struct1" : {
"inner_field1" : "inner val1",
"inner_field2" : "inner val2",
}
}
我想删除此结构中的一个内部字段。
我尝试了以下代码:
POST test_idx1/_doc/1/_update
{
"script": "ctx._source.remove('struct1.inner_field1');"
}
结果显示 updated
,但没有任何变化。
如何执行这样的操作?
您可以分两步完成此操作:
GET test_idx1/_doc/1
然后通过 struct1
删除 inner_field1
作为部分文档更新:
POST test_idx1/_update/1
{
"doc" : {
"struct1" : {
"inner_field2" : "inner val2",
}
}
}
您可以通过这种方式从所有现有文档中删除字段,
POST test_idx1/_update_by_query?conflicts=proceed
{
"script" : "ctx._source.struct1.remove('inner_field1')",
"query" : {
"exists": { "field": "struct1.inner_field1" }
}
}
我正在使用 Elasticsearch 6.5。
比方说,我的 Elasticsearch 文档如下所示:
"_source" : {
"field1" : "val1",
"field2" : "val2",
"struct1" : {
"inner_field1" : "inner val1",
"inner_field2" : "inner val2",
}
}
我想删除此结构中的一个内部字段。
我尝试了以下代码:
POST test_idx1/_doc/1/_update
{
"script": "ctx._source.remove('struct1.inner_field1');"
}
结果显示 updated
,但没有任何变化。
如何执行这样的操作?
您可以分两步完成此操作:
GET test_idx1/_doc/1
然后通过 struct1
删除 inner_field1
作为部分文档更新:
POST test_idx1/_update/1
{
"doc" : {
"struct1" : {
"inner_field2" : "inner val2",
}
}
}
您可以通过这种方式从所有现有文档中删除字段,
POST test_idx1/_update_by_query?conflicts=proceed
{
"script" : "ctx._source.struct1.remove('inner_field1')",
"query" : {
"exists": { "field": "struct1.inner_field1" }
}
}