ElasticSearch:如何从头删除索引条目?

时间:2013-03-22 18:08:46

标签: elasticsearch

我想直接从MOBZ的ElasticSearch头(web UI)中删除索引条目。

我在“任意请求”部分尝试了DELETE查询,其中包含以下内容:

{"query":{"term":{"supplier":"ABC"}}}

但是,我得到的回报是:

{
ok: true
acknowledged: true
}

并且不会删除条目。

我做错了什么?

3 个答案:

答案 0 :(得分:5)

您应该已从帖子数据中删除了“查询”。 你只需要它用于_search,你应该使用_query入口点进行删除。 在这种情况下,很明显帖子只是一个查询,从而使得它可以使用它(并且实际上是不相关的)来明确说明它是一个查询。

那是:

curl -XPOST 'localhost:9200/myindex/mydoc/_search' -d 
'{"query":{"term":{"supplier":"ABC"}}}'

可以正常搜索。 但要通过查询删除,如果您尝试:

curl -XDELETE 'localhost:9200/myindex/mydoc/_query' -d 
'{"query":{"term":{"supplier":"ABC"}}}'

它不起作用(注意_query的入口点的更改,以及切换CURL参数以删除)。 你需要打电话:

curl -XDELETE 'localhost:9200/myindex/mydoc/_query' -d 
'{"term":{"supplier":"ABC"}}'

如果这有帮助,请告诉我。

如果你想在HEAD中这样做:

  1. /stock/one/_query放在“GET / PUT / POST / DELETE”下拉框旁边的任意请求文本框中

  2. 在下拉菜单中选择DELETE

  3. 请求正文应为{"term":{"vendor":"Socks"}}

  4. 您的问题是您使用了{"query":{"term":{"vendor":"Socks"}}}的请求正文 这对于搜索很好,但不适用于删除。

答案 1 :(得分:0)

我首先发出搜索请求,以验证您要删除的文档实际上是由查询返回的。

不可能提供明确的帮助,因为有很多事情可能会出错,但这里有一些可能的问题:

  • 您没有在ES Head查询中指定的正确索引/类型
  • 您需要在第二个输入框中指定索引和类型,而不是第一个。第一行用于主机地址并自动添加尾部斜杠
  • 您需要使用下拉列表中的删除命令
  • 您的字段的分析器正在以Term查询找不到的方式更改字段文本。

很有可能,这是最后一种选择。如果您尚未指定分析器,ES选择的默认分析器是标准分析器,其中包括一个小写过滤器。因此,术语“ABC”从不编入索引,而是将“abc”编入索引。

根本不分析术语查询,因此区分大小写非常重要。

如果这些提示无效,请提供您的地图和一些示例数据,我们可能会提供更好的帮助。

答案 2 :(得分:0)

通过doc ID从插件头删除的简单方法:

  1. 转到插件头中的“任何请求”选项卡
  2. 只需将http:/localhost:9200/myindex/indextype/id放在DELETE下拉菜单上方的文本框中
  3. 从下拉列表中选择删除
  4. 通过单击“请求”按钮执行请求

以下是示例图片: