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:

@st.experimental_memo(ttl=600)
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():
    st.title('Home')

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

    query = {
        "range": {"TimeStamp": {"gte": "now-10d/d", "format": "epoch_millis"}}
    }
    result = es.search(index="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?

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.