关于 ES 日期范围和过滤器

时间:2021-04-06 09:32:10

标签: elasticsearch

我想按日期范围和标题中的短语进行搜索。 我的 elasticsearch 版本是 7.8.1 我的代码有什么问题?

{
  "query": {
    "bool": {
      "filter": {
        "and": [
          {
            "range": {
              "create_time": {
                "format": "yyyy-MM-dd",
                "from": "2000-01-01",
                "to": "3000-01-01",
                "include_lower": true,
                "include_upper": true
              }
            }
          },
          {
            "multi_match": {
              "query": "my name is here",
              "type": "phrase",
              "fields": [
                "title"
              ]
            }
          }
        ]
      }
    }
  },
  "sort": {
    "create_time": {
      "order": "desc"
    }
  }
}

我收到错误消息:

"type": "parsing_exception",
"reason": "[and] query malformed, no start_object after query name",


1 个答案:

答案 0 :(得分:0)

and query is replaced by bool query。您可以使用 bool/filter

组合 rangemulti-match 查询

将您的查询修改为

{
  "query": {
    "bool": {
      "filter": [          // note this
        {
          "range": {
            "create_time": {
              "format": "yyyy-MM-dd",
              "from": "2000-01-01",
              "to": "3000-01-01",
              "include_lower": true,
              "include_upper": true
            }
          }
        },
        {
          "multi_match": {
            "query": "my name is here",
            "type": "phrase",
            "fields": [
              "title"
            ]
          }
        }
      ]
    }
  },
  "sort": {
    "create_time": {
      "order": "desc"
    }
  }
}