我需要从给定的日期范围中获取所有ID:
def search(index_name, doc_type, esClient):
try:
res = esClient.search(index="apps-test", doc_type='app-test-logs', body = {
"query": {
"bool": {
"filter": [
{ "range":
{ "datetime":
{ "gte": "2017-07-22",
"lte":"2017-07-24", }}}
]
}
}
})
print(res)
except Exception as ex:
print(ex)
哪个回报我
{u'hits':{u'hits':[],u'total':0,u'max_score':None},u'_shards':{u'successful':5,u'failed' :0,u'total':5},u'took':41,u'timed_out':False}
我正在寻找的是获取给定日期范围之间所有ID的列表。
我的doc的唯一日期时间字段是“created_on”
答案 0 :(得分:0)
我的doc的唯一日期时间字段是" created_on"
" created_on"是该字段的名称?因此,查询中不应包含"datetime"
个pharase。范围查询语法使用字段的名称,而不是类型(通过提供名称ES将自动识别该类型)。因此,如果您的字段名为" created_on":
{
"query": {
"bool": {
"filter": [
{ "range":
{ "created_on":
{ "gte": "2017-07-22",
"lte":"2017-07-24"
}
}
}
]
}
}
您还可以检查格式yyyy-MM-dd是否与用于定义app-test-logs
类型映射的格式相同。如果没有,您可以在范围查询中使用format
参数。