栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

记录一次有意思的Elasticsearch垃圾数据删除操作

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

记录一次有意思的Elasticsearch垃圾数据删除操作

一次数据处理过程中出现bug,造成es中进入脏数据,需要快速删除脏数据。虽然java客户端有接口,但是有时候手头没有现成的依赖和代码。

1.首先想到的是curl

如果知道,第一个想到的是根据id删除数据

curl -XDELETe 'http://x.x.10.183:9200/info_data/info_data/9511'

java调用curl命令,便利id列表删除数据,但是这种方法慢,适用少量数据。

import cn.hutool.core.util.RuntimeUtil;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Del_esTest {
    public static String execCurl(String[] cmds) {
        ProcessBuilder process = new ProcessBuilder(cmds);
        Process p;
        try {
            p = process.start();
            BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
            StringBuilder builder = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                builder.append(line);
                builder.append(System.getProperty("line.separator"));
            }
            return builder.toString();

        } catch (IOException e) {
            System.out.print("error");
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
        //不按这样构建cmd 会报错
        String[] cmds = {"curl", "-X", "DELETE",
                "http://192.168.10.183:9200/info_data/info_data/9511",
                "-H", "accept: */*", "-H", "Content-Type: application/json;charset=UTF-8", "-d"
                , "{ \"bodyName\": \"bodyValue\"}"};
        
          //使用系统自带的ProcessBuilder
//        System.out.println(execCurl(cmds));


        //可以使用 hutool的 RuntimeUtil
        String str = RuntimeUtil.execForStr(cmds);
        System.out.println(str);
    }
}

2.鉴于根据id删除过慢,考虑能否直接根据搜索结果批量删除。

首先熟悉一下curl的search接口。

json格式化推荐使用:JSON在线解析及格式化验证 - JSON.cn,因为如果格式化不标准,curl粘贴过去可能会报错。

来源:Elasticsearch布尔查询——bool - 穷开心y - 博客园

#根据pubtime排序

curl -XGET 'http://192.168.10.183:9200/info_data/info_data/_search' -d '
{
    "sort":[
        {
            "pubtime":{
                "order":"desc"
            }
        }
    ],
    "from":0,
    "size":10
}
'

#根据site_group查询

curl -XGET 'http://192.168.10.183:9200/info_data/info_data/_search' -d '
{
    "query":{
        "term":{
            "site_group":"106"
        }
    },
    "sort":[
        {
            "id":{
                "order":"asc"
            }
        }
    ],
    "from":0,
    "size":1
}
'

#根据复合条件查询

curl -XGET 'http://192.168.10.183:9200/info_data/info_data/_search' -d '
{
    "query":{
        "bool":{
            "must":[
                {
                    "term":{
                        "data_type":"1"
                    }
                },
                {
                    "term":{
                        "site_group":"106"
                    }
                }

            ]
        }
    },
    "sort":[
        {
            "id":{
                "order":"asc"
            }
        }
    ],
    "from":0,
    "size":1
}
'

 #查询删除 delete_by_query,这种删除最快,但是一定要慎重,先查询确认,再删除

curl -X POST "localhost:9200/twitter/_delete_by_query?scroll_size=5000" -H 'Content-Type: application/json' -d'
{
  "query": {
    "term": {
      "user": "kimchy"
    }
  }
}
'

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/324839.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号