如何从elasticsearch索引2.2版中删除所有类型的文档

时间:2016-03-13 18:09:26

标签: elasticsearch

我正在尝试使用nodejs客户端删除特定类型的所有文档以进行弹性搜索。

我有这段代码:

var deleteType = function (type, done) {
    client().indices.delete({
      "index": settings.index,
      "type": type,
      "ignore": [404]
    }, function (error, response) {
      if (error) {
        logger.error(error, 'Failed to delete index type');
        done(error);
      } else {
        logger.debug({"res": response}, "deleted %s index", type);
        done();
      }
    });
  };

类型和索引参数很好。但它似乎是删除整个索引,而不仅仅是那种类型的文档。我猜我用indices.delete进行了错误的API调用。

删除索引中特定“类型”的所有文档的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

在2.0版之前,您可以使用Delete Mapping as part of the Indices API删除索引中的类型。

  

允许删除映射(类型)及其数据。其余的部分   端点是

     

[DELETE] / {index} / {type}

     

[DELETE] / {index} / {type} / _ mapping

     

[DELETE] / {index} / _ mapping / {type}

从2.0版开始,Elasticsearch不再直接支持此功能。 documentation解释如下:

  

不再可以删除类型的映射。相反,你   应删除索引并使用新映射重新创建它。

但是,此功能由Delete By Query Plugin提供。

  

逐个删除插件添加了对删除所有内容的支持   与指定查询匹配的文档(来自一个或多个索引)。   它是有问题的逐个查询功能的替代品   已从Elasticsearch核心中删除。

只需构建一个查询,过滤您要删除的索引中的类型,并将其作为"删除查询的基础"。