Elasticsearch-dsl排序,找到最后X个条目

Bas*_*ace 5 python elasticsearch-dsl elasticsearch-py

我正在尝试查找我的索引/文档类型中的最后 30 条条目

我什么也没尝试,我已经没有想法了!

我当前的方法是找到过去 5 分钟内的所有结果,然后过滤结果并抓取最后 30 个条目,但这比正确的方法慢。

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

我已经尝试过

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

Aja*_*ngh 1

检查doctype中是否启用了时间戳。如果启用,则只有我们可以在 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()
Run Code Online (Sandbox Code Playgroud)