我们可以从没有id的弹性搜索数据库更新/删除文档

时间:2018-02-20 06:36:47

标签: elasticsearch

我是Elastic Search db的新手。使用id属性我能够更新和删除但没有id属性(我的意思是文件的另一个属性是唯一的)它不起作用。请告诉我,我们能不能这样做。

3 个答案:

答案 0 :(得分:2)

我认为你在寻找的是

  1. 按查询更新
  2. https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html

    POST twitter/_update_by_query?conflicts=proceed
    {
      "query": { 
        "term": {
          "user": "kimchy"
        }
      }
    }
    
    1. 按查询删除
    2. https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html

      POST twitter/_delete_by_query
      {
        "query": { 
          "match": {
            "message": "some message"
          }
        }
      }
      

答案 1 :(得分:0)

您可以使用_delete_by_query API。

_delete_by_query在启动时获取索引的快照,并使用内部版本控制删除它找到的内容。这意味着如果文档在拍摄快照的时间和处理删除请求之间发生更改,则会出现版本冲突。当版本匹配时,文档将被删除。

代码段。

POST twitter/_delete_by_query
{
  "query": { 
    "match": {
      "message": "some message"
    }
  }
}

答案 2 :(得分:0)

以下是要更新的查询

POST /indexName/typeName/_update_by_query
{
  "query": { 
    "match": {
      "name": "abc"
    }
  },
  "script": {
    "inline": "ctx._source.description = 'Updated description'"
  }
}

这是查询删除

POST /indexName/typeName/_delete_by_query
{
  "query": { 
    "match": {
      "name": "abc"
    }
  }
}