How to use streamlit with elasticsearch?

I want to authenticate in elasticsearch using streamlit and to change the query after authentication, depending on the selected values from some dropdowns. How to achieve this?

I tried:

def get_es_result(username='user', password='pass'):

    es = Elasticsearch(['https://elastic-endpoint/'],
                       http_auth=(username, password))
    return es

But this triggers:

TypeError: can't pickle _thread.lock objects

In the python app I’m calling the above method like:

def app():

    es = get_es_result()
    df = pd.DataFrame()

    query = {
        "range": {"TimeStamp": {"gte": "now-10d/d", "format": "epoch_millis"}}
    result ="test-index", size=10000, body=
        "query": query


How could I cache the authentication to the elasticsearch so that it happens only once and then query the data?