Elasticsearch, как запросить вложенный диапазон - PullRequest
0 голосов
/ 15 октября 2018

Имея некоторые данные в моем ES (6.4), например:

"hits": {
"total": 1,
"max_score": 1,
"hits": [
  {
    "_index": "tracking",
    "_type": "activity",
    "_id": "u9hzd2YB_M8C5mR3Zhkn",
    "_score": 1,
    "_source": {
      "locationid": "test1",
      "quality": [
        {
          "dataTimeBegin": "2018-08-13 00:00",
          "dataTimeEnd": "2018-08-13 00:00",
          "contacts": 0
        },
        {
          "dataTimeBegin": "2018-08-13 00:01",
          "dataTimeEnd": "2018-08-13 00:01",
          "contacts": 5
        },
   ...

Мой вопрос сейчас: как выполнить запрос по вложенному массиву?У меня есть сопоставление:

"mappings": {
"activity": {
  "properties": {
    "quality": {
      "type": "nested",
      "properties": {
        "dataTimeBegin": {
          "type":   "date",
          "format": "yyyy-MM-dd HH:mm"
        },
        "dataTimeEnd": {
          "type":   "date",
          "format": "yyyy-MM-dd HH:mm"
        }
      }
    }
  }
}

И попробуйте выполнить запрос следующим образом:

"query": {
  "bool": {
    "must": [
      {
        "match": {
          "locationid": "test1"
        }
      },
      {
      "nested": {
        "path": "quality",
        "query": {
          "bool": {
            "must": [
              {
                "range": {
                  "quality.dataTimeBegin": {
                    "from": "2018-08-13 00:00",
                    "to": "2018-08-13 00:00",
                    "include_lower": true,
                    "include_upper": true
                  }
                }
              }
            ]
          }
        }
      }
    ]
  }
}

Это должно дать мне ровно одну запись, но я получаю все документы.Я попробовал это также с вложенным отображением и без.Что я могу сделать, где ошибка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...