2014-03-12 84 views
0

我剛剛進行了彈性搜索,並努力從我的收藏夾中刪除條目。 我需要與此類似 查詢DELETE FROM消息WHERE ID =「1323」」和created_user =‘[email protected]’。彈性搜索刪除操作

以下是我的彈性搜索查詢,當我執行此,它只會刪除特定的id字段,它不採取第二個參數created_user。請幫我解決這個問題。謝謝

var created = "9ed8afe738aa63c28b66994cef1f83c6" 
db.delete({ 
      index: 'outboxpro', 
      type: 'message', 
      id: req.body.post_id, 
      created_user: created 
     }, function (error, resp) { 
      if (error) { 
       return next(error); 
      } 
      var data = {}; 
      console.log('delete response',resp); 
      if (resp.hits.successful < 1) { 
      data = {status: false, message: 'NO POST FOUND TO DELETE', code: 400}; 
      res.send(data); 
      } else { 
       return next({status: true, message: 'POST DELETED', data: error, code: 500}); 
      } 
}); 

////編輯 我曾嘗試deleteByQuery,下面是我的代碼

db.deleteByQuery({ 
    index: 'outboxpro', 
    type: 'message', 
    body:{ 
     "query": { 
      "filtered": { 
       "query": { 
        "match": { 
         "_id": { 
          "query": "Kal4AXi5R9G-IMx4GIKYMw" 
         } 
        } 
       }, 
       "filter": { 
        "and": [ 
         { 
          "term": { 
           "created_user": created 
          } 
         } 
        ] 
       } 
      } 
     } 
    } 
}, function (error, resp) { 
    if (error) { 
     return next(error); 
    } 
    console.log('post deleted'); 
}); 
+0

可不可以給你的映射和也你從彈性搜索中得到答案嗎? – 2014-03-12 13:35:41

回答

1

刪除API將按照您想要的方式完成,只是稍微圍繞一點。

您首先要做的就是搜索要刪除的文檔,因此構建一個搜索查詢,查找ID爲'1323'且created_user爲'[email protected]'的所有文檔。從返回的文檔中,您將能夠檢索您需要傳遞給刪除API的文檔ID。

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-delete.html

+0

感謝您的幫助,我以同樣的方式如您所說。非常感謝你.. – Dibish

2

您可以刪除的文件匹配查詢,使用由elasticsearch查詢刪除..請參閱

http://www.elasticsearch.org/guide/en/elasticsearch/client/javascript-api/current/api-reference-1-0.html#api-deletebyquery-1-0

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

db.deleteByQuery({ 
    index: 'outboxpro', 
    type: 'message', 
    body: { 

     "query": { 
      "filtered": { 
       "query": { 
        "match": { 
         "_id": "Kal4AXi5R9G-IMx4GIKYMw" 
        } 
       }, 
       "filter": { 
        "term": { 
         "created_user": "created" 
        } 
       } 
      } 
     } 
    }, 
    function (error, resp) { 
     if (error) { 
      return next(error); 
     } 
     console.log('post deleted'); 
    }); 
+0

感謝您的評論。我試過db.deleteByQuery,我沒有通過運行查詢得到任何錯誤。但數據沒有刪除 – Dibish

+0

你正在使用哪個版本的ES? – BlackPOP

+0

它應該刪除。我不知道哪一步你做錯了..請發佈您使用的查詢..! – BlackPOP