【问题标题】:Delete Elasticsearch index without deleting its mappings删除 Elasticsearch 索引而不删除其映射
【发布时间】:2014-01-22 10:04:42
【问题描述】:

如何在不删除索引映射的情况下从我的 elasticsearch 数据库中删除数据?

我是 Tire gem,使用 delete 命令删除我的所有映射并再次运行 create 命令。我想避免创建命令一次又一次地运行。

请帮帮我。

【问题讨论】:

  • 我认为这不可能,因为您使用 ElasticSearch 来保存数百万甚至数十亿条记录并对其进行索引。那么,当您保存了文档后,为什么需要删除它们并再次索引它们呢?您所说的仅在您继续删除整个索引并再次创建具有小型索引数据的索引时才适用。正如@HüseyinBABAL 所说,重要的是数据而不是映射。
  • 为什么要保留数据映射?本案例的重要部分是保留索引数据。您可以轻松地再次创建映射
  • 我对保留索引数据不感兴趣,但我希望数据在相同的映射格式下被索引。
  • 假设我正在从 twitter 下载特定搜索的推文并将它们存储在 elasticsearch 分析这些数据并显示一些结果。现在进行新的搜索,我不希望保留早期的数据。这就是为什么我想知道是否有任何方法可以在不影响映射的情况下删除早期的数据。
  • 这是一个很好的问题 - 当前的答案都没有解决它。

标签: database elasticsearch tire


【解决方案1】:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-delete-by-query.html找到它

DELETE <index>/_query
{
  "query" : {
    "match_all": {}
  }
}

您也可以通过将其更改为 DELETE &lt;index&gt;/&lt;type&gt;/_query 来删除特定类型

这将删除数据并维护映射、设置等。

【讨论】:

【解决方案2】:

由于 ElasticSearch 删除它的文档的方式(通过使用 bitset 标记要删除的文档),迭代 X 数量的文档并将它们标记为删除是不值得的。我相信,当您刷新索引时,它将通过删除标记了删除位集的所有文档来释放内存,这是一项昂贵的操作并减慢索引所在的分片。

希望这会有所帮助。

【讨论】:

    【解决方案3】:

    您可以使用index templates,它将应用于名称与模式匹配的索引。

    这样你可以简单地删除一个索引,使用delete index api(比删除其中的所有文档要好),当你重新创建相同的索引时,匹配的索引模板将被应用到它,所以你不要'不需要重新创建它的映射、设置、加热器...

    发生的情况是映射将被删除,因为它们引用了您删除的索引,但由于它们也存储在索引模板中,因此您以后在重新创建相同的索引时不需要再次重新提交它们。

    【讨论】:

      【解决方案4】:

      根据最新的docs 更新 Yehosef 的答案(截至本文为 6.2):

      POST <index>/_delete_by_query
      {
        "query" : {
          "match_all": {}
        }
      }
      

      【讨论】:

        【解决方案5】:

        通过查询删除在 1.5.3 中已弃用

        您应该使用滚动/扫描 API 来查找所有匹配的 id,然后发出批量请求以删除它们。

        据记录 here

        curl -XGET 'localhost:9200/realestate/houses/_search?scroll=1m' -d '
        {
            "query": {
                "match_all" : { }
            },
            "fields": []
        }
        '
        

        然后批量删除(别忘了在最后一行后换行)

        curl -XPOST 'localhost:9200/_bulk' -d '
        { "delete" : { "_index" : "realestate", "_type" : "houses", "_id" : "1" } }
        { "delete" : { "_index" : "realestate", "_type" : "houses", "_id" : "2" } }
        { "delete" : { "_index" : "realestate", "_type" : "houses", "_id" : "3" } }
        { "delete" : { "_index" : "realestate", "_type" : "houses", "_id" : "4" } }
        { "delete" : { "_index" : "realestate", "_type" : "houses", "_id" : "5" } }
        { "delete" : { "_index" : "realestate", "_type" : "houses", "_id" : "6" } }
        { "delete" : { "_index" : "realestate", "_type" : "houses", "_id" : "7" } }
        { "delete" : { "_index" : "realestate", "_type" : "houses", "_id" : "8" } }
        '
        

        【讨论】:

        猜你喜欢
        • 2016-05-22
        • 2013-04-15
        • 1970-01-01
        • 1970-01-01
        • 2020-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多