意外使用错误字段索引多个文档后从elasticsearch中删除损坏的数据

问题描述 投票:0回答:1

我编写了一个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]" }

我已经尝试了上面的代码并得到了很多字段,如下所示:

some of the field names in this photo

甚至一个网站的 javascript 代码也包含在我的字段中。这不是很有趣吗?

python elasticsearch kibana
1个回答
0
投票

您可以使用

_update_by_query
摄取处理器在带有摄取管道的索引上运行
remove
来删除您想要的所有字段。

但是,映射本身无法更改,其中的字段将保留在那里,并将计入 1000 个字段限制。

如果您希望拥有一个干净的索引,最好的选择是将其重新索引到具有正确映射的另一个全新索引中,最终

dynamic: false
以防止意外创建字段。

© www.soinside.com 2019 - 2024. All rights reserved.