There is no concept of commit in elasticsearch as you think it is. When you
index/delete/update a document, the changes is persisted (and replicated).
The document will become visible for search once the index is "refreshed"
(note, does not map to a Lucene commit). By default, the index is refreshed
every 1 second.
Does refresh slow down concurrent searching? In Solr commits tend to
be blocking and slow everything down.
An updated document will be visible for search once the index has been
refreshed. One thing to note is that in master (upcoming 0.17), a full
realtime GET API (get by id) has been implemented.
A lot of my updates is to update the "popularity" field of a document,
which I use to rank search results. Users votes are used to change the
"popularity" of a document.
Since the "popularity" field changes frequently, in Solr I'd need to
update the "popularity" field in MySQL, then use cron jobs to pull
data out from MySQL to index to Solr periodically so as not to
overwhelm Solr. It's kind of messy. Do I need to do something similar
in ES? Or can I just update the "popularity" field in ES whenever a
user casts a vote, and then set refresh_interval to say 5s and let ES
handles the periodic index updates (every 5s in this case)?