ElasticSearch
ElasticSearch
Use cases
Offload read requests (not requiring realtime) from MySQL
- Why? - * 
- Approach: Option 1 vs Option 2 below - Option 2 is adopted because Option 1 needs to introduce additional components and does not improve much on latency 
 
โโโโโโโโโโโโโโโโโ                                                                  โโโโโโโโโโโโโโโโ
โ               โ         Option1: ES monitor MySQL's binlog and put binlog        โ              โ
โ               โ                          data inside ES                          โ              โ
โ     MySQL     โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโถโElasticSearch โ
โ               โ              Option2: Write data to ES using ES APIs             โ              โ
โ               โ                                                                  โ              โ
โโโโโโโโโโโโโโโโโ                                                                  โโโโโโโโโโโโโโโโResiliency
- What if there is an error using Option 2: Add another task inside SQL server. There will be a worker task regularly scanning through these tasks. Use this type of compensation mechanism to make ES and MySQL data eventual consistent. 
Latency
- There will be a delay when data comes into ES's index buffer but not into file system cache. So for requests requiring real time data, better rely on MySQL. 

Comparison - Lucene vs Solr vs ElasticSearch
- Reference [In Chinese: https://zhuanlan.zhihu.com/p/161645496] 
Last updated
Was this helpful?