Delete / add nested objects in Elastic search Delete / add nested objects in Elastic search json json

Delete / add nested objects in Elastic search


You will have to use scripted updates unless you want to fetch all nested objects then add / remove items and re-index them all which is the previous answer proposed. However if you have a lot of nested documents you should be doing partial updates / additions and deletes. It is much quicker from data transfer and indexing point of view.

Here is a good article how to do scripted updates in general:

https://iridakos.com/programming/2019/05/02/add-update-delete-elasticsearch-nested-objects


Unless I misunderstand your ask, you just post the updated document version to the same document id each time you want.

To delete a nested document (or any field):

PUT my_index/my_type/1{  "group" : "fans",  "user" : [    {      "first" : "Alice",      "last" :  "White"    }  ]} 

To add a user, add it to the list:

PUT my_index/my_type/1{  "group" : "fans",  "user" : [    {      "first" : "Alice",      "last" :  "White"    },    {      "first" : "Peter",      "last" :  "Parker"    }  ]} 

Note: Documents in elasticsearch are immutable. Making a change to a single field causes the entire document to be re-indexed. Nested documents are always re-indexed with the parent document so if you change a field in the parent the nested document is also re-indexed. This can be a performance issue if the nested documents are large and the parents have frequent changes.