2014-09-08 7 views
0

J'essaie donc la requête suivante mais je n'ai que 10 résultats. Je veux tous les résultats correspondants.Le filtre ElasticSearch NEST ne retourne pas toutes les valeurs

elasticSearchQuery = (q => q.Filtered(frd => frd 
        .Query(qf => qf.MatchAll()) 
        .Filter(f => f.Bool(b => 
          b.Must(mt => 
          mt.Term("productType", productTypeId) 
        ))))); 

La partie MatchAll ne semble pas fonctionner. Qu'est-ce que je fais mal?

Répondre

0

Vous devez spécifier le nombre de résultats. De et la taille peut être définie en tant que paramètres de demande, ils peuvent également être définis dans le corps de recherche. de 0 par défaut, et les défauts de taille à 10.

+0

Mais je les veux tous! Et je n'ai aucune idée de combien il y en a? Alors, comme juste définir int.MaxValue comme taille? – user1613512

+0

Vous avez deux options, exécuter une requête de comptage et extraire tous les résultats ou itérer sur les résultats en utilisant De et Taille. –

0

D Volsky est correcte, la taille par défaut est 10. Vous pouvez le voir dans la documentation ici: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-from-size.html

La raison est que les résultats qui apparaissent complètement sans rapport pourrait être retourné même si leur score est faible. Vous pouvez essayer que votre requête renvoie 1000 résultats ou plus, mais en appliquant min_score aux résultats. Une min_score peut vous aider à vous assurer que vos résultats sont toujours pertinents. Documentation pour min_score ici: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-min-score.html

Questions connexes