Cloudsearch 日期范围

Cloudsearch Date range

我有以下格式的云搜索文档,我正在使用简单的 queryParser。因此,当我搜索 'abc' 时,我得到了两个结果,因为两个文档包含名字 "abc"。如何将其提升到一个新的水平并向查询添加日期范围?比如,我想在开始 >= date1 和开始 < date2 的两个日期之间搜索 "abc"。我能想到的一种方法是在上传文档之前,将 started 字段转换为 timeinMillis,然后做一个范围。这是解决这个问题的唯一方法,还是我也可以为日期建立一个范围?

  {
    "id": "d48810e8-082a-4422-887c-a3a69aa95f3e",
    "fields": {
      "origin": [
        "http://localhost:3006"
      ],
      "firstname": [
        "abc"
      ],
      "started": [
        "2017-03-30T15:45:03.848Z"
      ],
      "lastname": [
        "xyz"
      ]
    }
  },
  {
    "id": "47ae007e-41ec-4110-82f1-716d4e48670c",
    "fields": {
      "origin": [
        "http://localhost:3006"
      ],
      "firstname": [
        "opq"
      ],
      "lastname": [
        "rst"
      ],
      "started": [
        "2017-01-09T20:00:47.264Z"
      ]
    }
  },
  {
    "id": "6a6df5be-9518-44f4-8b9d-62ff21c5e89c",
    "fields": {
      "origin": [
        "http://localhost:3006"
      ],
      "firstname": [
        "abc"
      ],
      "lastname": [
        "xyz"
      ],
      "started": [
        "2017-01-18T19:09:01.318Z"
      ]
    }
  }

CloudSearch 支持 date 字段类型 (docs)。使用它,您对转换为毫秒的所有担忧都会消失。

要搜索日期范围,请使用 range 语法 (docs),例如 started:['2013-01-01T00:00:00Z',} 搜索在该日期

之后具有 started 的条目

使用布尔运算符将其与您的文本查询相结合,例如 (AND firstname :'abc' started:['2013-01-01T00:00:00Z',}) 并确保使用结构化查询解析器