繁体   English   中英

如何从Elasticsearch Index 2.2版中删除所有类型的文档

[英]How to remove all documents of type from elasticsearch index version 2.2

我正在尝试使用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调用。

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

在2.0版之前,您可以使用Delete Mapping作为Indices API的一部分删除索引中的类型。

允许删除映射(类型)及其数据。 REST端点是

[删除] / {index} / {type}

[删除] / {索引} / {类型} / _映射

[删除] / {index} / _ mapping / {type}

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

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

但是,“ 按查询删除”插件可提供此功能。

“按查询删除”插件增加了对删除与指定查询匹配的所有文档(从一个或多个索引)的支持。 它替代了有问题的按查询删除功能,该功能已从Elasticsearch核心中删除。

只需构造一个查询,该查询将过滤要删除的索引中的类型,并将其用作“按查询删除”的基础。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM