【问题标题】:Elasticsearch-py Index takes 4 arguments, 5 given?Elasticsearch-py 索引需要 4 个参数,给定 5 个?
【发布时间】:2019-11-24 07:45:05
【问题描述】:

我对 Elasticsearch-py 客户端进行了以下调用:

esClient.index(index=data['AppName'], id=data['RequestId'], body=data)

运行代码时出现以下错误:

Traceback (most recent call last):
   File "C:\Users\danielschnoll\dashboard\backend.py", line 52, in main
      parseData(sowSet)
   File "C:\Users\danielschnoll\dashboard\backend.py", line 36, in parseData
      sendToElasticSearch(d)
   File "C:\Users\danielschnoll\dashboard\backend.py", line 39, in sendToElasticSearch
      esClient.index(data['AppName'], id=data['RequestId'], body=data)
   File "C:\elasticsearch-6.2.0-py2.7.egg\elasticsearch\client\utils.py", line 76, in _wrapped
      return func(*args, params=params, **kwargs)
TypeError: index() takes at least 4 arguments (5 given)

我不确定我是如何得到这个错误的。我的 4 个参数是来自 esClient 的“self”调用,然后是 index、id 和 body JSON 对象。这个假设的第五个论点在哪里,我该如何补救?谢谢

【问题讨论】:

  • 有没有用于esClientindex方法的装饰器?
  • 我不这么认为@Chillie。我一直在关注这个文档:elasticsearch-py.readthedocs.io/en/master/…
  • 而且您没有使用elasticsearch.Elasticsearch 作为基类来实现任何自定义方法/类?
  • 不,不是那样的
  • 您没有提供必需的参数吗?如果将它们全部或一个一个删除会怎样?

标签: python elasticsearch elastic-stack elasticsearch-py


【解决方案1】:

错误很尴尬,文档缺少解释。

提供 5 个或更多参数不会出错 - 它说至少 - 但你应该提供你的第一个参数 index 作为第一个位置参数,id 作为第二个参数:

esClient.index(data['AppName'], data['RequestId'], body=data)

在上面的评论中,您的链接目标下方提供的链接中的indirectly explained,因为没有提供索引作为参数的选项,只能直接调用PUT indexname/...

【讨论】:

  • 这是否意味着 reathedocs 文档中的调用签名有误?
  • 是的,去年把我逼疯了……XD
  • 这仍然没有解决问题。我已经用完整的堆栈跟踪更新了我的帖子问题。即使删除了 kwargs 的 "index=" 部分,我仍然会收到错误消息。
  • 您是否也尝试过将 id 值作为位置参数?
  • 这似乎已修复它!现在我对我的其余代码进行了一些进一步的调试,但我不再得到那个索引错误了。我赞同您的回答,您应该使用 id 部分对其进行更新,以便其他人将其作为参考。谢谢!
猜你喜欢
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
  • 2016-07-16
  • 2014-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多