4

I am using elasticsearch-dsl for my python application to query elastic search.

To debug what query is actually getting generated by elasticsearch-dsl library, I am unable to log or print the final query that goes to elasticsearch.

For example, like to see the request body sent to elasticsearch like this :

{
    "query": {
        "query_string": {
           "query": "Dav*",
           "fields": ["name", "short_code"],
           "analyze_wildcard": true
        }
    }
}

Tried to bring the elasticsearch log level to TRACE. Even then, unable to see the queries that got executed.

1 Answer 1

4

Take a look at my blog post here, "Slowlog settings at index level" section. Basically, you can use slowlog to print in a separate log file Elasticsearch generates, the queries. I suggest using a very low threshold to be able to see all the queries.

For example, something like this, for a specific index:

PUT /test_index/_settings
{
  "index": {
    "search.slowlog.level": "trace",
    "search.slowlog.threshold.query.trace": "1ms"
  }
}

Or

PUT /_settings
{
  "index": {
    "search.slowlog.level": "trace",
    "search.slowlog.threshold.query.trace": "1ms"
  }
}

as a cluster-wide setting, for all the indices.

And the queries will be logged in your /logs location, a file called [CLUSTER_NAME]_index_search_slowlog.log.

Sign up to request clarification or add additional context in comments.

3 Comments

Thanks Andrei for your answer. This satisfies my current debugging needs.,
Thanks - this helped. For others' reference, there are some additional ideas here
I wonder how to turn the slow log off. "-1" does not work

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.