具有特定字段值的ElasticSearch Python API时间范围

w8f9ii69  于 2023-04-05  发布在  ElasticSearch
关注(0)|答案(1)|浏览(118)

我试图写一个查询elasticsearch其中即时通讯搜索在一个特定的时间范围内的特定名称的一个字段称为“名称”。
我想出了:

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:400,'parsing_exception','[range] malformed query,expected [END_OBJECT] but found [FIELD_NAME]')
我做错了什么?

3duebb1j

3duebb1j1#

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

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

相关问题