当前位置: 首页 > 知识库问答 >
问题:

如何在python 2.7中执行这个CURL来从Elasticsearch中删除文档?

莫宁
2023-03-14

您好,我是python和elasticsearch的新手。我在本地设置了Elasticsearch,并向其中添加了数据。http://127.0.0.1:9200/index_data/type_data.

我想从type\u数据中删除一些\u id。假设要删除的\u id列表为x=['a','b','c.'d'。

curl-XDELETE“localhost:9200/index\u data/type\u data/a?漂亮的'

使用这个命令,我可以从elasticsearch中删除一个特定的\u id,但是如何使用python执行这个curl请求呢?

是否可以使用python删除整个type_data?

为什么此代码不起作用?

from elasticsearch import Elasticsearch 
es = Elasticsearch()
request_body = {
    "query": {
        "ids": {
            "values": ['a','b','c','d','e','f']
        }
    }
}
es.delete_by_query(index=es_index, body=request_body)

我使用的是Elasticsearch版本6.1.0。elasticsearch py版本5.4.0

请救救我!

共有1个答案

蒋何平
2023-03-14

如果有很多ID,请在python:Documentation中尝试并行\u批量删除:http://elasticsearch-py.readthedocs.io/en/master/helpers.html#elasticsearch.helpers.parallel_bulk

from elasticsearch import Elasticsearch
from elasticsearch import helpers

es = Elasticsearch()
index_name = es_index
doc_type = your_doc_type
ids = ['a','b','c','d','e','f']


def generate_actions(ids):
    for i in ids:
        yield {
            '_op_type': 'delete',
            '_index': index_name,
            '_type': doc_type,
            '_id': i
        }


for success, info in helpers.parallel_bulk(client=es, actions=generate_actions(ids), thread_count=4):
    if not success: 
        print('Doc failed', info)
 类似资料:
  • 问题内容: 如何使用感知控制台或curl在Elasticsearch中删除arraylist值? 我想删除任何数组元素。 它对我不起作用: 要么 问题答案: 如果要删除列表中的所有事件,可以执行以下操作: 或者,如果您只想删除第一个,例如: 另请注意,如果您想使用双引号就可以了,但是您需要将其转义,例如。 或带有参数:

  • 问题内容: 我创建具有指定文档类型“ mytype”的索引“ myindex”。我可以删除索引,但是似乎“ mytype”仍然存在而没有与索引绑定。 如何摆脱“ mytype”? 问题答案: 如果您确实删除了索引,则该索引中的映射将不再存在。集群中是否还有其他具有相似类型名称的索引? 要回答问题:,请使用Delete Mapping API : 编辑 :从elasticsearch 2.0,将不再

  • 问题内容: 我需要在所有索引到Elasticsearch的文档中删除一个字段。我该怎么做。任何删除查询都可以帮助我实现这一点。 问题答案: @backtrack所说的是对的,但是在Elasticsearch中有一种非常方便的方法。Elasticsearch将抽象出删除的内部复杂性。您需要使用更新API来实现- 您可以在此处找到更多文档。 注意:从Elastic Search 6开始,您需要包括一个

  • 问题内容: 有没有一种简单的方法可以从命令行在充满文本文档的文件夹中删除同一行文本? 问题答案: 如果您的sed版本允许该标志(就地编辑): 如果没有,只需将其放入bash循环中即可:

  • 问题内容: 在每行末尾添加\ n,结束程序正常工作,仅在最后一行工作… 请举个例子,我在任何解决方案中都尝试不了什么,而我发现这里不适合我。 问题答案: 您可以分割最后一个字符: 也许更好的方法是使用字符串库:

  • 问题内容: 我有以下要在node.js中操作的文本文件(“ test.txt”): 我想删除第一行,以使其成为第一行。我怎样才能做到这一点? 问题答案: