【问题标题】:Deleting data in ElasticSearch在 ElasticSearch 中删除数据
【发布时间】:2017-04-18 11:40:07
【问题描述】:

我想删除 ElasticSearch 中与查询匹配的数据。我使用 ElasticSeach 1.5 并执行此查询以实现此目的:

POST employee/report/_delete_by_query
{
   "query": {
      "bool": {
         "must": [
           [                 
                   { "match_phrase" : { "year_month" : "2016-8" }  },
                   { "term" : { "status" : "Inactive" }  }
            ]
         ]
      }
   }
}

当我这样做时,我得到了这个结果:

{
   "_index": "employee",
   "_type": "report",
   "_id": "_delete_by_query",
   "_version": 6,
   "created": false
}

每次我运行查询时,_version 数字都会得到 +1。 然后我查询已删除的条款,以检查是否没有更多结果:

GET employee/report/_search
{
   "query": {
      "bool": {
         "must": [
           [                 
                   { "match_phrase" : { "year_month" : "2016-8" }  },
                   { "term" : { "status" : "Inactive" }  }
            ]
         ]
      }
   }
}

我仍然得到结果!我做错了什么?我需要刷新 ElasticSearch 吗?我错过了一些步骤?

【问题讨论】:

  • 这个答案会有所帮助:stackoverflow.com/questions/36563687/…
  • 我正在使用 1.5.2 版本,所以我认为它已经是一个核心功能,然后他们将其删除,然后他们为此编写了另一个 api……我错了吗?

标签: elasticsearch


【解决方案1】:

使用 delete-by-query API 的正确方法如下,即您需要使用DELETE HTTP 方法访问_query 端点:

DELETE employee/report/_query
{
   "query": {
      "bool": {
         "must": [
           [                 
                   { "match_phrase" : { "year_month" : "2016-8" }  },
                   { "term" : { "status" : "Inactive" }  }
            ]
         ]
      }
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    相关资源
    最近更新 更多