我正在尝试找到一种方法来删除ElasticSearch索引中特定属性的所有条目,并删除该属性的所有类型Map。
我一直在查看以下两个文档页面:put mapping和delete mapping
从第二个链接开始:
“允许删除Map(类型)及其数据。REST终结点为/{index}/{type}with Delete方法。”
我想我需要的是/{index}/{type}/{property}
?
我是否需要重新创建整个索引来实现这一点,即在类型之间移动和操作数据?
例如,对Map调用GET:
curl -XGET 'http://.../some_index/some_type/_mapping'
结果:
{
"some_type": {
"properties": {
"propVal1": {
"type": "double",
"index": "analyzed"
},
"propVal2": {
"type": "string",
"analyzer": "keyword"
},
"propVal3": {
"type": "string",
"analyzer": "keyword"
}
}
}
}
在对propVal3
执行此删除操作后,将返回:
curl -XGET 'http://.../some_index/some_type/_mapping'
结果:
{
"some_type": {
"properties": {
"propVal1": {
"type": "double",
"index": "analyzed"
},
"propVal2": {
"type": "string",
"analyzer": "keyword"
}
}
}
}
并且propVal3
的所有数据将通过索引被删除。
4条答案
按热度按时间dddzy1tm1#
你不能这么做。忘记这个值是存在的.;-)如果您确实需要删除它,则必须对您的文档重新编制索引。
sxpgvts32#
为此,您可以使用新的
_reindex
API,甚至可以在运行reindex之前将新的_mapping
放到DEST索引中,以便更改索引中的字段的属性。要重新编制索引并删除属性,可以执行以下操作:
如果您要将其与_aliases API结合使用,则可以修改索引,而不会出现任何停机
chhkpiq43#
目前不能从Map中删除属性。为了从所有记录中删除属性的所有值,您需要在删除此属性的情况下对所有记录重新编制索引。
dhxwm5r44#
您可以选择要为新索引重新编制索引的文档域。例如:
Post_reindex{“源”:{“index”:“my-source-index”,“_source”:[“host.host name”,“host.ip”,“Another_field”]},“est”:{“index”:“my-est-index”}}
参考文献:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html#docs-reindex-filter-source