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

Elasticsearch dsl删除错误

蒋永宁
2023-03-14

我在使用elasticsearch dsl删除项目时遇到问题。当我试图过滤我的数据时,它很容易,像这样的东西效果很好。

def searchId(fileId):
s = Search().filter('term', fileId=fileId)
# for hit in s:
#     print(str(hit.foreignKey))
response=s.execute()
# print(response.hits.total)
return response

扫描也可以:

def scanning():
s = Search()
i = 0
for hit in s.scan():
    if hit.domain == 'Messages':
        i+=1
        print(str(hit.fileId) + " : " + str(hit.domain) + " : " + str(i))

但是当我想删除这样的项目时:

def deleteId(fileId):
s = Search().query('match', fileId=fileId)
response = s.delete()
return "Done"

我出错了:

    Traceback (most recent call last):
  File "", line 1, in 
  File "/home/o.solop/DataSearchEngine/datasearch/elasticapp/search.py", line 96, in deleteId
    response = s.delete()
  File "/usr/local/lib/python2.7/dist-packages/elasticsearch_dsl/search.py", line 660, in delete
    **self._params
  File "/usr/local/lib/python2.7/dist-packages/elasticsearch/client/utils.py", line 73, in _wrapped
    return func(*args, params=params, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/elasticsearch/client/__init__.py", line 887, in delete_by_query
    raise ValueError("Empty value passed for a required argument.")
ValueError: Empty value passed for a required argument.

共有1个答案

卫高谊
2023-03-14

我在搜索构造函数中错过了一个索引。我应该这样做:

def deleteId(fileId):
 s = Search(index='my_index_name').query('match', fileId=fileId)
 response = s.delete()

Elasticsearch ch-dsl使用delete_by_queryAPI,如我的错误消息中所示,它需要知道针对哪个索引执行删除。

 类似资料:
  • 您好,我正在尝试在我的Web服务中运行一个查询,但是一个查询在范围内的函数会从零开始中断。 我的代码: 错误: 获取请求失败请求失败-- 类型异常报告 Message内部服务器错误 描述服务器遇到内部错误,无法满足此请求。 例外 javax.servlet.ServletException:java.lang.NullPointerException 根本原因 JAVAlang.NullPoint

  • 我已经实现了一个,可以在其中添加和删除项目。我希望添加的项目添加到第二个位置,并且每当我添加新项目时,动画运行良好。也就是说,最后一个项目向下移动,让新项目的空间淡入。 当我删除一个项目时,有一个问题我不知道如何解决。我希望它的行为是: < li >淡出删除的元素, < li >向上移动它下面的所有项目。 实际发生的事情是,首先,最后一项消失,然后动画的其余部分发生。当已删除元素下方的项目向上移动

  • 问题内容: Heroku上的Postgres 9.3.2。 可以肯定的是我只是个白痴,但是我似乎无法弄清楚为什么我的语法错误。 问题答案: 是Postgres中的保留关键字。如果要引用名为 user 的 实际 表,则必须将其用引号引起来: __ 如果可以的话,最好不要使用保留关键字作为表名。通常最终会在以后产生一些奇怪的问题。 可能是一个更好的表名。

  • 我有以下一段代码: 我想过滤掉来自另外两个机器人的无意义的机器人信息。 然而,这会导致bot删除服务器上的每个用户的消息。 用户“臭墨水”的消息被删除了。

  • 问题内容: 我有一个JTable,我需要删除一行,即选定的行。 所以首先,我得到表模型: 然后是选定的行(如果选择了第二行,则返回1,这是可以理解的,因为行从零开始): 然后,我尝试删除该行: 然后我再次设置表模型: 这实现的是删除完全随机的行。我根本不明白为什么。我已经使用table.setRowSorter(sorter)对表进行了排序,但是我不知道为什么这应该是一个问题。如果绝对需要SSCC

  • 我在jpa删除传播中遇到了一些奇怪问题:我有一个对象A,它与对象C有一对多关系。我有另一个对象B,它与对象C有一对一关系(A-C和B-C),当我试图删除一个'a'对象时,然后Hibernate删除它,而不删除它的C对象。但在此之前,它尝试使用第二个关系商店选择C对象 以下是日志: 下面是我的代码: 在类中: 在B类中: 在C类中: