具有特定字段值的Elasticsearch python api时间范围



我试图为elasticsearch编写一个查询,其中我在特定时间范围内搜索一个名为& name&quot的字段的特定名称。

我想出了:

body = {
"query": {
"range": {
'timeObject': {
"from": '2018-01-01T20:10:30',
"to": '2023-03-01T20:10:30'
}},
"bool": {
"filter": {
"terms": {
"name": ["Anna", "Peter", "Bob", "John"]
}
}
}

但是我得到错误:elasticsearch.exceptions.RequestError: RequestError(400, 'parsing_exception', '[range]格式错误的查询,期望[END_OBJECT]但发现[FIELD_NAME]')

我做错了什么?

一个选项是将范围查询放在过滤器子句中。过滤器是一个数组,你必须使用"filter": [{..}]

,

{
"query": {
"bool": {
"filter": [
{
"range": {
"timeObject": {
"from": "2018-01-01T20:10:30",
"to": "2023-03-01T20:10:30"
}
}
},
{
"terms": {
"name": [
"Anna",
"Peter",
"Bob",
"John"
]
}
}
]
}
}
}