需求
- 需要删除特定索引
- 不想修改代码,重启应用服务,就需要直接在elasticsearch服务里删除
解决
- elasticsearch是有提供根据查询删除方法的
- 先查询,确定有多少结果,避免误删除
- 查询单条记录
curl http://192.168.40.3:9200/huangshan_ex9_4/6796612/8885822
- 条件查询,match_phrase表示精确匹配
curl -X POST "http://192.168.40.3:9200/huangshan_ex9_4/6796612/_search" -H 'Content-Type: application/json' -d'
{
"query": {
"match_phrase": {
"url": "113.mas.gov.cn"
}
}
}'
- 查询并删除
注意:
1,如果是在kibana执行,请注意大小写。如果是小写,命令左侧有红色的×,说明小写时下面的json条件未生效
2,删除时,尽量确定 index 和 type,确认查询条件,防止误删除大量数据。如果误删除,就需要重建索引了
curl -X POST "http://192.168.40.3:9200/huangshan_ex9_4/6796612/_delete_by_query" -H 'Content-Type: application/json' -d'
{
"query":{
"match_phrase":{
"url": "113.mas.gov.cn"
}
}
}'