Développeur web
Mapado en chiffres
Les débuts
Full text search
Migration complête
Le futur
à une date plus ou moins précise (prochainement, ce week-end, demain, ce soir)
géolocalisé
Code:
Framework:
Databases: |
|
Base de donnée maitre: MongoDB
Repliquée pour la recherche dans MySQL
Le 8 mars 2013 à 20h30 | 2013-03-08 20:30:00 | 2013-03-08 20:30:00 |
---|---|---|
Le 8 mars 2013 | 2013-03-08 00:00:00 | 2013-03-08 23:59:59 |
Du 8 au 10 mars 2013 de 10h à 12h | 2013-03-08 10:00:00 | 2013-03-08 12:00:00 |
2013-03-09 10:00:00 | 2013-03-09 12:00:00 | |
2013-03-10 10:00:00 | 2013-03-10 12:00:00 | |
Tous les lundis | 2013-01-07 00:00:00 | 2013-01-07 23:59:59 |
2013-01-14 00:00:00 | 2013-01-14 23:59:59 | |
2013-01-21 00:00:00 | 2013-01-21 23:59:59 | |
... |
MongoDB → MySQL
+ MongoDB → ElasticSearch (mais sans les dates)
{ "query": {
"function_score: {
"score_mode": "avg",
"functions": [
{
"gauss": {
"lat_lng": { "origin": { "lat": 45.76749, "lon": 4.83433 } }
}
},
{
"gauss": {
"popularity": { "origin": 1, "scale": 0.1 }
}
}
]
}
} }
Réplication MongoDB → ElasticSearch:
Utilisation des "Nested" pour gérer nos listes de dates
{
"title": "Meetup Elasticsearch Lyon #1",
"lat_lng": "45.7622013, 4.8621385",
"schedule": [
{
"start_datetime": 2014-12-04 19:00:00,
"end_datetime": 2014-12-04 19:00:00
}
]
}
{ "filter" : {
"nested" : {
"path" : "schedule",
"filter" : {
"range" : {
"schedule.start_datetime": {
"gte": 2014-12-04 19:30:00
}
}
}
}
} }
Le 8 mars 2013 à 20h30 |
2013-03-08_night, 2013-03-08_fullday,
|
---|---|
Le 8 mars 2013 |
2013-03-08_day, 2013-03-08_night, 2013-03-08_fullday,
|
Tous les lundis |
2013-01-07_day, 2013-01-07_night, 2013-01-07_fullday,
|
Ajout de la prise en compte des interactions utilisateurs (stockés dans ES via Logstash)
{ "query": {
"function_score: {
"score_mode": "sum",
"functions": [
{
"gauss": {
"lat_lng": { "origin": { "lat": 45.76749, "lon": 4.83433 } }
}
},
{
"script_score": {
"script": "user-popularity",
"params": { /* ... */ }
}
}
]
}
} }
Pas de regrets sur la migration MySQL → ES
Probablement l'outil qu'il nous fallait
On pense que c'est l'outil qu'il va nous falloir
ES pas votre base principale :
Optimisez vos données pour votre utilisation