首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >弹性搜索全量导入

弹性搜索全量导入
EN

Stack Overflow用户
提问于 2015-05-05 21:55:35
回答 1查看 262关注 0票数 1

我们在我们的项目中使用Elastic Search,并遵循推送方法。我们有一个调度程序,它每30分钟运行一次,从表中读取数据,并使用Spring data Elastic Search将数据推送到Elastic Search。

代码语言:javascript
运行
复制
Collection<ElasticSearchIndexObj> indexObjs = new ArrayList<>();

Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            conn = dataSource.getConnection();

            stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);
            stmt.setFetchSize(FETCH_SIZE);          
            rs =  stmt.executeQuery(ESEARCH_FULL_IMPORT_QUERY);

            int i=1;
            while (rs.next()) {
                ElasticSearchIndexObj indexObj = new ElasticSearchIndexObj();
                indexObj.setName("Raja");


                indexObjs .add(indexObj);

                if (i % FETCH_SIZE == 0) {
                    elasticSearchObjIndexRepository.save(indexObjs);
                    indexObjs.clear();
                }               
                i=i+1;
            }           
            elasticSearchSecurityIndexRepository.save(indexObjs);
            indexObjs.clear();

我们每隔30分钟读取整个表并插入到elastic search中,以保持索引数据与表的同步。这张桌子正被其他团队拥有。

怀疑:-已从表中删除行。现在,当我选择*时,我将不会得到已删除的记录。但是,这些记录在弹性搜索中仍然存在,这些记录将成为搜索中的陈旧数据。如何删除elastic search中的所有记录,然后将其作为计划的一部分插入,而不影响前屏中的搜索。

有没有我可以在这里使用transaction的方法,这样我就可以删除所有,保存并最终提交。

谢谢,Baskar.S

EN

回答 1

Stack Overflow用户

发布于 2015-05-30 02:04:06

您可以使用弹性搜索的delete接口删除索引。

代码语言:javascript
运行
复制
$ curl -XDELETE 'http://localhost:9200/index_name

要删除所有索引,可以使用*或_all。

为了在java中使用相同的东西,您必须执行以下查询

代码语言:javascript
运行
复制
DeleteResponse response = client.prepareDelete().execute().actionGet();  

问候

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30055027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档