Currently, the backend server runs as a single process, which maintains the index data structure in memory. This should works for a small scale problem. But for applications where there are many documents to be indexed and searched, the index data structure might be very big, that we need to partition it into multiple shards, and to start multiple backend server instances -- each maintains a shard. Also, how could the client makes a single RPC call to add documents to the (or all) correct shard.
Currently, the backend server runs as a single process, which maintains the index data structure in memory. This should works for a small scale problem. But for applications where there are many documents to be indexed and searched, the index data structure might be very big, that we need to partition it into multiple shards, and to start multiple backend server instances -- each maintains a shard. Also, how could the client makes a single RPC call to add documents to the (or all) correct shard.