Elasticsearch逐个查询返回成功但记录仍然存在?

时间:2013-05-02 21:14:08

标签: json rest lucene elasticsearch

我正在尝试使用delete by query API

从elasticsearch中删除记录

执行:

curl -XDELETE localhost:4040/search/foo/_query -d '{
  "term": {
    "record id": "0f9eaa6f-90bb-4dee-9ecb-78a5d04719c0"
  }
}'

结果:

{
  "ok": true,
  "_indices": {
    "foo": {
      "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
      }
    }
  }
}

然后,查询:

curl -XGET localhost:4040/search/foo/_search -d '{
  "query": {
    "match": {
      "record id": "0f9eaa6f-90bb-4dee-9ecb-78a5d04719c0"
    }
  }
}'

给了我:

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  }
}

打印了5条记录......

我试过跑:

curl -XGET localhost:4040/search/foo/_refresh

但仍会返回结果?

1 个答案:

答案 0 :(得分:3)

您正在使用term查询进行删除,而您正在使用match查询进行搜索。这是两个不同的查询。在term执行时,match查询不会分析提供的查询字词。因此,根据您对record id字段的分析方式,这两个查询可能会产生不同的结果。