2017-03-13 2 views
1

J'essaie de trouver les 30 dernières entrées dans mon index/doc typesorte ElasticSearch-dsl, trouver dernières entrées X

Je n'ai rien essayé et je suis tout d'idées!

Mon approche actuelle Je trouve tous les résultats au cours des 5 dernières minutes, puis filtre les résultats et récupère les 30 dernières entrées, mais c'est plus lent que l'approche correcte.

s = Search(using=es, index="history", doc_type=p) 
    .filter('range', timestamp={'gte': mins}) 
    .extra(size=1000) 

Et j'ai essayé

s = Search(using=es, index="history", doc_type=p) 
    .sort("timestamp", {'order': "desc"}) 
    .extra(size=30) 

Répondre

0

Vérifiez si horodatage est activé dans doctype .Si il est de permettre, alors que nous pouvons utiliser horodatage dans ElasticSearch dsl.

#Add Query 
s = Search(using=es, index="history", doc_type=p).query("query_string", query="*").sort("timestamp", {'order': "desc"}) 

#To specify the from/size parameters i.e for first 30 entries 
s=s[0:30] 

#Call elasticsearch 
s.execute() 
0

la bonne façon de trier sur timestamp dans l'ordre décroissant est soit s = s.sort('-timestamp') ou s = s.sort({"price" : {"order" : "desc"}}). Vous avez spécifié votre sort incorrectement.

+0

Y at-il une faute de frappe dans la deuxième option? 's = s.sort ({" timestamp ": {" order ":" desc "}})'? – ximiki