1

I am desperately trying to perform a simple search operation on elasticsearch, but fail since hours. This is my code:

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

I saw this many times on the internet, but I get always an error and have no clue what is wrong with my code snippet.

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'

Where do I have to write the required 'query'? I am trying to perform the search for name and last name.

0

1 Answer 1

2

The search method from pyelasticsearch library (which you are using) calls the query argument query, not 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

I think you meant to use the official elasticsearch library, with which your code works perfectly fine (to add more confusion, its documentation is located at elasticsearch-py.readthedocs.io).

Both libraries export the same module name, so things can sometimes sort of work when you use the wrong one. This is not a coincidence, see this article on their history and differences. Installing the official client is easy as:

pip uninstall pyelasticsearch
pip install elasticsearch
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.