2

在 Javascript API 中使用deleteByQuery()我想从名为people.

需要注意的是,这是AWS Elastic Search Service中的 5.1 版。

索引映射如下所示:

"people": {
  "mappings": {
    "person": {
      "properties": {
        "name": {
          "type": "string"
        },
        "parent_id": {
          "type": "long"
        },
        "query": {
          "properties": {
            "match": {
              "properties": {
                "parent_id": {
                  "type": "long"
                }
              }
            },
            "term": {
              "properties": {
                "parent_id": {
                  "type": "long"
                }
              }
            }
          }
        }
      }
    }
  }
}

一个搜索查询的结构如下:

query: {
  term: {
    parent_id: 1
  }
}

回应:

"hits": {
  "total": 1,
  "max_score": 10.135444,
  "hits": [
    {
      "_index": "people",
      "_type": "person",
      "_id": "AVp6EDRVm933W5mwl4O9",
      "_score": 10.135444,
      "_source": {
        "name": "Bob",
        "parent_id": 1
      }
    }
  ]
}

因此,然后使用 JS API 的文档,我创建了以下内容:

const elasticsearch = require('elasticsearch')
function deletePeople (parentId) {
  new elasticsearch
  .Client({ host: 'es.host.domain' })
  .deleteByQuery({
    index: 'people',
    type: 'person',
    body: {
      query: {
        term: {
          parent_id: parentId
        }
      }
    }
  }, function afterDeletingPeople (error, response) {
    if (error) {
      return console.log("deletePeople :: Error :: ", error);
    }
    else {
      return console.log("deletePeople :: Response :: ", response);
    }
  });
};
deletePeople(1);

这给出了如下响应:

info: deletePeople :: Response ::  { _index: 'people',
  _type: 'person',
  _id: '_delete_by_query',
  _version: 30,
  _shards: { total: 2, successful: 1, failed: 0 },
  created: false }

这看起来很有希望,但实际上没有人从索引中删除。我尝试在查询中使用match而不是,term但它做同样的事情。

谁能建议我在这里出了什么问题,因为目前我的功能没有删除任何人?蒂亚!

4

0 回答 0