How to append to an Array in Elasticsearch using elasticsearch-py

0 min read 79 words

If you are using the Official ElasticSearch Python library (Docs), and you want to create an index:

doc = {
    "something": "123a",
    "somethingelse": "456b",
    "timestamp": datetime.now(),
    "history": []
}
es.index(index="someindex", doc_type="somedoctype", id="someid", body=doc)

You can append items to the history each time, instead of overriding them, like this:

es.update(index="someindex", doc_type="somedoctype", id="someid",
    body={
        "script" : {
            "source": "ctx._source.history.addAll(params.history)",
            "lang": "painless",
            "params" : {
                "history" : ["item1","item2"]
            }
        }
    })

This uses scripted updates in Elasticsearch, for appending to an array.

Tags:
Andrew
Andrew

Andrew is a visionary software engineer and DevOps expert with a proven track record of delivering cutting-edge solutions that drive innovation at Ataiva.com. As a leader on numerous high-profile projects, Andrew brings his exceptional technical expertise and collaborative leadership skills to the table, fostering a culture of agility and excellence within the team. With a passion for architecting scalable systems, automating workflows, and empowering teams, Andrew is a sought-after authority in the field of software development and DevOps.

Tags

Recent Posts