面试题答案
一键面试适用场景
- 数据清理:当需要定期清理历史数据,比如日志数据保留一定时间后删除,可根据时间字段筛选删除。
- 错误数据处理:如果部分数据录入错误,且有共同特征,如某个字段值错误,可按该字段筛选删除。
- 业务变更:业务逻辑变化,导致某些符合特定条件的数据不再需要,如旧的业务规则下产生的数据。
使用方法及请求体示例
假设索引名为test_index
,要删除status
字段值为inactive
的文档,使用Elasticsearch的_delete_by_query
API ,请求体如下:
POST test_index/_delete_by_query
{
"query": {
"match": {
"status": "inactive"
}
}
}
上述请求使用match
查询来匹配status
字段值为inactive
的文档并删除。如果是更复杂的条件,如多个字段匹配,可使用bool
查询:
POST test_index/_delete_by_query
{
"query": {
"bool": {
"must": [
{
"match": {
"status": "inactive"
}
},
{
"range": {
"created_at": {
"lt": "2023-01-01"
}
}
}
]
}
}
}
此请求会删除status
为inactive
且created_at
早于2023-01-01
的文档。