I'm designing a system to run globally. There are multiple private independent locations across the globe creating searchable documents.
The locations across the globe are already connected together with a private (off Internet) network. But I cannot guarantee that the network will be available at all of the locations all of the time.
The documents cannot go to the Internet, they must stay within the private network.
I want all of the documents from all of the locations to be fed into a central Elasticsearch service, to create a central aggregated search of all the data from all of the locations. This central Elasticsearch will be searched by most of the locations most of the time.
When a location is disconnected from the rest, when the network is down, I want the locally created data to still be searchable at that location.
I imagine I need to design a hub-and-spoke system like this:
Is there something better I can do?
Could I arrange automatic replication from the spoke Elasticsearch services into the central one?