我搜索过但搜索过但无法找到答案。我不熟悉使用Elasticsearch和Python,并尝试对我的Elasticsearch索引进行简单的Python查询,该索引将返回与过去一小时内的一组特定条件匹配的结果计数。我使用以下(已清理的)代码获取所有结果:
hits = es.count(index='myindex-*',q=thing.rstrip() )
足够简单吧?那么有没有办法在这个查询中包含相对时间范围,或者我是否需要编写一些Python来计算插入时间范围的时间?
提前感谢您的帮助!
答案 0 :(得分:1)
是的,您需要的只是索引中基于时间的密钥,然后使用以下命令查询该密钥:
{
"query" : {
"range" : {
"<time_based_key>" : {
"gte" : "now-1h"
}
}
}
}
定义基于时间的密钥:
curl -XPUT localhost:9200/<database>/<index>/_mapping?pretty -d '
{
"<index>" : {
"properties": {
"<time_based_key>" : {
"type" : "date",
"index": "not_analyzed"
}
}
}
}'