【发布时间】:2019-03-25 16:02:20
【问题描述】:
要从所有文档中删除任何具有值的字段而不从 Elasticsearch 索引中删除整个文档,我通常使用 _update_by_query API 调用和 script
例如: my_properties 索引上的所有字段,例如 (key=>value) 从它存在的所有文档中删除。使用下面的查询,我可以删除所有存在的 feed 字段,但在这种情况下,feed 字段是 text/string 类型
索引:my_properties
字段:供稿
类型:文字
Feed 上的示例值: feed: ["AB-1234"]
POST my_properties/_update_by_query?refresh&conflicts=proceed
{
"script" : "ctx._source.remove('feed')",
"query" : {
"exists": { "field": "feed" }
}
}
我的主要问题是当我的字段类型是 nested 而不是 text/string
索引:my_properties
字段:feed_v2
类型:嵌套
feed_v2 上的示例值: feed_v2: [{"feed":12},{"id":["AB-9999"]}]
方法一:
POST my_properties/_update_by_query?refresh&conflicts=proceed
{
"script" : "ctx._source.remove('feed_v2')",
"query" : {
"exists": { "field": "feed_v2" }
}
}
方法2:
POST my_properties/_update_by_query?refresh&conflicts=proceed
{
"script" : "ctx._source.feed_v2.remove('feed')",
"query" : {
"exists": { "field": "feed_v2.feed" }
}
}
没有任何效果,我错过了什么吗?不确定,但我的猜测是-
"query" : {"exists": { "field": "feed_v2" }}
查询存在不能与嵌套类型字段相同,这就是它的原因 尝试删除
nested类型字段时找不到任何内容
根据参考:https://stackoverflow.com/a/53771354/1138192 它应该对我有用,但可惜它对我不起作用。
【问题讨论】:
标签: elasticsearch elasticsearch-painless amazon-elasticsearch