美文网首页
【Elasticsearch】查询并删除匹配文档之_delete

【Elasticsearch】查询并删除匹配文档之_delete

作者: coder小明 | 来源:发表于2020-03-21 16:26 被阅读0次

    思路:先查询确认,后精准删除

    假设我想删除title是”小明今晚真的不加班“这条记录,先查看一下现有的记录:

    (不加班不好吗?为什么要删除呢?)

    tips:可以使用match_phrase精准查询,查询命令可以通过curl查询,也可以通过其他工具请求(其实道理都一样)

    curl -X POST "http://192.168.16.65:9211/blog/_search" -H 'Content-Type: application/json' -d'
    {
        "query": {
            "match_phrase": {
                "title": "小明今晚真的不加班"
            }
        }
    }
    '
    

    blog为索引,_search为es的查询指令,查询结果如下:

    {
        "took": 13,
        "timed_out": false,
        "_shards": {
            "total": 3,
            "successful": 3,
            "skipped": 0,
            "failed": 0
        },
        "hits": {
            "total": {
                "value": 1,
                "relation": "eq"
            },
            "max_score": 110.28655,
            "hits": [{
                "_index": "blog",
                "_type": "_doc",
                "_id": "6a0d343fb629da2e2cdf6f4bf250af04",
                "_score": 110.28655,
                "_source": {
                    "author": "程序员小明",
                    "capture_time": 1583820020000,
                    "content": "今晚可以终于可以王者荣耀带妹了",
                    "title": "小明今晚真的不加班",
                    "top_domain": "mynamecoder.com",
                    "url": "http://blog.mynamecoder.com"
                }
            }]
        }
    }
    

    可以看到数据中有一条符合条件的文档,我们现在就要删除该文档。

    删除title为"小明今晚真的不加班"的文档(忍痛):

    curl -X POST "http://192.168.16.65:9211/blog/_delete_by_query" -H 'Content-Type: application/json' -d'
    {
      "query":{
        "match":{
          "title":"小明今晚真的不加班"
        }
      }
    }
    '
    

    tips: 使用_delete_by_query时,必须指定索引,此处blog就是索引,_delete_by_query是elasticsearch的删除指令

    删除结果:

    {
      "took" : 147,
      "timed_out": false,
      "deleted": 1,
      "batches": 1,
      "version_conflicts": 0,
      "noops": 0,
      "retries": {
        "bulk": 0,
        "search": 0
      },
      "throttled_millis": 0,
      "requests_per_second": -1.0,
      "throttled_until_millis": 0,
      "total": 119,
      "failures" : [ ]
    }
    

    重点关注total(查询到的条数)和deleted(删除的总数)两个字段,最后不放心的话,可以再查询一下刚才那个文档是否还存在。

    tips:es执行删除的时候es并不是立即删除,虽然我们再次查询已经找不到了,但es自身是将该文档先标记准备删除状态,一段时间后,异步删除。

    相关文章

      网友评论

          本文标题:【Elasticsearch】查询并删除匹配文档之_delete

          本文链接:https://www.haomeiwen.com/subject/doxuyhtx.html