我编写了一个Python代码,它使用curl并获取time_download和特定网站的一些其他信息,并将它们放入Elasticsearch的索引中。我正在处理的数据量很大。应用程序崩溃了,而不是 time_download,而是将网站的整个 HTML 放入我的 Elasticsearch 中。现在我有像“”这样的字段,以及许多其他垃圾字段。我也不需要在错误字段中包含此类信息的文档。如何删除文档或字段?
我想删除它们的原因是我添加了一个新字段,但出现错误:
{'error': {'root_cause': [{'type': 'mapper_parsing_exception', 'reason': 'failed to parse'}], 'type': 'mapper_parsing_exception', 'reason': 'failed to parse', 'caused_by': {'type': 'illegal_argument_exception', 'reason': 'Limit of total fields [1000] has been exceeded while adding new fields [1]'}}, 'status': 400}
它在我的索引管理中的视图也非常丑陋。
我之前对这些字段还好,因为没有其他人可以在索引管理中看到它们,但我和我很匆忙,所以忽略了这个问题。现在我遇到了这个问题,我真的需要删除它们,只保留对我来说重要的字段。
GET _sql?format=txt { "query": "DESC [my_index_name]" }
我已经尝试了上面的代码并得到了很多字段,如下所示:
甚至一个网站的 javascript 代码也包含在我的字段中。这不是很有趣吗?
您可以使用
_update_by_query
摄取处理器在带有摄取管道的索引上运行 remove
来删除您想要的所有字段。
但是,映射本身无法更改,其中的字段将保留在那里,并将计入 1000 个字段限制。
如果您希望拥有一个干净的索引,最好的选择是将其重新索引到具有正确映射的另一个全新索引中,最终
dynamic: false
以防止意外创建字段。