Je n'arrive pas à obtenir une carte qui réduit l'échantillon lorsque les données sont partagées entre deux nœuds. Je le stockage des documents qui se rapportent à des erreurs d'application étant enregistrées sur deux nœuds RavenDB locaux, les documents d'erreur ressemblent:Mapper/Réduire les données surimprimées avec RavenDB
Exemple de document sur le nœud 1, il y a 6 au total
errors/1/6
{
"UniqueId": "c62c7e30-8ec7-45af-88e4-da023d796727",
"ApplicationName": "MyAppName"
}
Exemple de document le noeud 2, il y a 7 totale
errors/2/6 --Error stored on shard node 2
{
"UniqueId": "7e0b0f87-9d75-4e70-9fa0-d64a18bc88dc",
"ApplicationName": "MyAppName"
}
quand je lance cette requête:
public class ApplicationNames : AbstractIndexCreationTask<ErrorDocument, Application>
{
public ApplicationNames()
{
Map = errors => from error in errors
select new { error.ApplicationName, Count = 1 };
Reduce = results => from error in results
group error by new { error.ApplicationName, error.Count } into g
select new { g.Key.ApplicationName, Count = g.Sum(x=> x.Count) };
}
}
Je récupère 2 résultats; un avec un compte de 6, le second avec un compte de 7. Je m'attendais à ce que les deux résultats de chaque fragment soient combinés en un résultat avec un compte de 13. Je ne sais pas si je fais quelque chose de mal ou si ce n'est pas comment c'est censé fonctionner. J'ai suivi l'exemple à http://ravendb.net/documentation/docs-sharding pour mettre en place la stratégie de sharding.
réponse tardive, mais étant donné que la propriété est protégée Réduire le compilateur se plaint avec cette solution. – Grant
En ce qui concerne Réduire la protection, j'ai également essayé de créer une nouvelle propriété Reduce sur mon Index ApplicationNames, mais cela devrait être défini avec des types anonymes à faire correspondre, ce que je ne pense pas être possible. – Grant
Je suis très surpris par cette réponse, pourquoi ne pas réduire la prise en charge sur les partitions - et quand cette fonctionnalité sera-t-elle implémentée? –