当前位置: 首页 > 知识库问答 >
问题:

在java中使用elasticSearch 2.3.3按索引名称和类型删除索引

储法
2023-03-14

我在java中有一个项目,我使用弹性搜索2.3.3对数据进行索引。索引有两种类型。

我的索引文档如下所示:

{
   "took": 10,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "failed": 0
   },
  "hits": {
      "total": 3,
      "max_score": 1,
      "hits": [
        {
           "_index": "test_index",
           "_type": "movies",
           "_id": "uReb0g9KSLKS18sTATdr3A",
           "_score": 1,
           "_source": {
              "genre": "Thriller"
            }
       },
       {
           "_index": "test_index",
           "_type": "drama",
           "_id": "cReb0g9KSKLS18sTATdr3B",
           "_score": 1,
           "_source": {
              "genre": "SuperNatural"
            }
        },
        {
           "_index": "index1",
           "_type": "drama",
           "_id": "cReb0g9KSKLS18sT76ng3B",
           "_score": 1,
           "_source": {
              "genre": "Romance"
            }
         }
      ]
   }
}

我只需要删除特定名称和类型的索引。

例如:-从上面的文档中,我想删除名为“test\u index”的索引,并键入“戏剧”。

因此,结果应该如下所示:

{
   "took": 10,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "failed": 0
   },
  "hits": {
      "total": 2,
      "max_score": 1,
      "hits": [
        {
           "_index": "test_index",
           "_type": "movies",
           "_id": "uReb0g9KSLKS18sTATdr3A",
           "_score": 1,
           "_source": {
              "genre": "Thriller"
            }
       },
       {
           "_index": "index1",
           "_type": "drama",
           "_id": "cReb0g9KSKLS18sT76ng3B",
           "_score": 1,
           "_source": {
              "genre": "Romance"
            }
         }
      ]
   }
}

尝试的解决方案:

客户admin()。索引()。删除(new DeleteIndexRequest(“test\u index”)。actionGet();

但它删除了名称为“test_index”的两个索引

我还尝试了各种sense测试插件查询,如:

删除/测试索引/戏剧

它给出了错误:找不到uri[/test\u index/traic]和方法[DELETE]的处理程序

删除 /test_index/drama/_query?q=_id:*

它也不起作用。

当我在那个时候发出删除索引请求时,我们不知道索引的ID,我必须仅按名称和类型删除索引。

如何使用java api删除所需的索引?

共有1个答案

夏涵畅
2023-03-14

在使用删除映射API的ES 2.0之前,这曾经是可能的,但是由于2.0删除映射API不再存在。为此,您必须安装按查询删除插件。然后您只需对索引和类型进行匹配所有查询,然后将其全部删除。

查询如下所示:

DELETE /test_index/drama/_query
{
  "query": { 
    "query": {
        "match_all": {}
    }
  }
}

还要记住,这将删除映射中的文档,而不是映射本身。如果要删除映射,则必须在没有映射的情况下重新索引。

这可能有助于您实现java

 类似资料:
  • 本文向大家介绍如何使用Java在MongoDB中删除索引?,包括了如何使用Java在MongoDB中删除索引?的使用技巧和注意事项,需要的朋友参考一下 在MongoDB中删除索引,您需要使用dropIndex()方法。 语法 在Java中,可以使用dropIndex()方法删除索引,您需要将索引的类型(升序或降序)和在其上创建字段的名称传递给该方法。 示例 输出结果

  • 问题内容: 我正在使用带有NEST的C#.NET应用程序来创建索引。 我创建了一个Elasticsearch索引,客户可以查询该索引,称为index_1。然后,我使用应用程序的不同实例构建索引的另一个版本,并将其称为index_1_temp。 我将index_1_temp重命名为index_1然后删除原始index_1的最安全方法是什么? 我知道ES具有别名,但是我不确定如何将其用于此任务 编辑:

  • 我刚刚开始学习Spring,我面临以下问题。有人能指出我可能做错了什么吗? 线程“main”组织中出现异常。springframework。豆。工厂BeanDefinitionStoreException:IOException解析来自类路径资源[org/pus/learn/src/main/resources/applicationBean.XML]的XML文档;嵌套的例外是java。伊奥。Fi

  • 问题内容: 我知道可以通过deleteByQuery从某种类型删除所有文档。 例: 但是我没有术语,只是想删除该类型的所有文档,无论使用什么术语。什么是实现这一目标的最佳实践?空项不起作用。 链接到deleteByQuery 问题答案: 我相信,如果您将通过查询进行的删除与匹配相结合,则它应该做您想要的所有事情(例如,使用示例): 或者您可以删除类型:

  • 问题内容: 我可以通过传递索引名称,类型和ID来删除文档,如下所示: 但是,当我试图通过仅提供索引名称来删除索引时,如下所示(根据此文档) 得到- 我已经尝试过另一种这样的方式(参考) 得到: 我正在使用此依赖项: mvn依赖项:树 这是我的pom.xml 问题答案: Spring-boot v2.1.2发行版为Elasticsearch版本定义了以下属性: 和以下依赖 这就是在依赖树中这样做的原

  • 问题内容: 我的许多日志都以logstash-Year- Week格式编制索引。那就是如果我想删除超过几周的索引,如何在elasticsearch中实现。有没有简单,无缝的方法可以做到这一点? 问题答案: 策展人将是这里的理想之选。您可以在这里找到链接-https: //github.com/elastic/curator 如下所示的命令应该可以正常工作- 您可以将其保留在CRON中,以偶尔删除索