【问题标题】:Elasticsearch Python API results in "search() missing 1 required positional argument" on a simple queryElasticsearch Python API 在简单查询中导致“search() 缺少 1 个必需的位置参数”
【发布时间】:2023-04-03 14:49:02
【问题描述】:

我拼命地尝试在 elasticsearch 上执行一个简单的搜索操作,但几个小时后就失败了。这是我的代码:

res = es.search(index="people", doc_type="test", body={"query":{"match":{"name": "john"}}})

我在互联网上看到过很多次,但我总是收到错误,不知道我的代码 sn-p 有什么问题。

Traceback (most recent call last):
  File "./es_request.py", line 14, in <module>
    res = es.search(index="people", doc_type="test", body={"query":{"match":{"name": "john"}}})
  File "/usr/local/lib/python3.4/dist-packages/pyelasticsearch/client.py", line 93, in decorate
    return func(*args, query_params=query_params, **kwargs)
TypeError: search() missing 1 required positional argument: 'query'

我必须在哪里编写所需的“查询”?我正在尝试搜索姓名和姓氏。

【问题讨论】:

    标签: python python-3.x elasticsearch elasticsearch-py pyelasticsearch


    【解决方案1】:

    pyelasticsearch 库(您正在使用)中的search 方法调用查询参数query,而不是body

     query = {"query": {"match": {"name": "john"}}}
     es.search(index="people", doc_type="test", query=query)
     es.search(query, index="people", doc_type="test")  # you can also do this
    

    我认为您打算使用官方的 elasticsearch 库,您的代码使用它可以完美运行(为了增加更多混乱,其文档位于 elasticsearch-py.readthedocs.io)。

    两个库都导出相同的模块名称,因此当您使用错误的库时,有时会在某种程度上起作用。这不是巧合,see this article 关于他们的历史和差异。安装官方客户端很简单:

    pip uninstall pyelasticsearch
    pip install elasticsearch
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-20
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-12
      相关资源
      最近更新 更多