эластичный поиск безболезненного массива первый элемент - PullRequest
0 голосов
/ 05 февраля 2020

Существует много объектов следующего типа: отображение:

  {
    "_index": "crm",
    "_type": "order",
    "_id": "1",
    "_score": 1.0,
    "_source": {
      "executionPercent": 50,
      "phase": [
        {
          "phaseId": "1",
          "phaseName": "phaseOne",
          "startDateTime": "2019-11-12T18:09:51.894Z",
          "endDateTime": "2019-11-12T21:15:43.797Z"
        },
        {
          "phaseId": "2",
          "phaseName": "phaseTwo",
          "startDateTime": "2019-11-12T21:15:43.797Z"
        }
      ],
    }
  },
  {
    "_index": "crm",
    "_type": "order",
    "_id": "2",
    "_score": 1.0,
    "_source": {
      "executionPercent": 10,
      "phase": [
        {
          "phaseId": "1",
          "phaseName": "phaseOne",
          "startDateTime": "2019-11-13T06:37:45.850Z"
        }
      ],
    }
  }

Мне нужно искать объекты, в которых startDateTime в массиве "phase" (первый элемент) находился между dateFrom и dateTo запрос:

 {
    "query": {
        "filter": {
            "script": {
                "params": {
                    "dateFrom": 2019-11-11
                    "dateTo": 2019-11-12
                },
                "script": "doc['startDateTime'][0].value > dateFrom && doc['startDateTime'][0].value < dateTo"
            }
        }
    } 
}

Может быть, использовать «lang»: «безболезненно»? извините за мой английский sh и код

1 Ответ

0 голосов
/ 05 февраля 2020

Диапазон запроса может использоваться для поиска документов по полям даты. Ниже приведен пример кода, который находит документы, имеющие startDateTime между данными датами и датой.

GET crm/_search
{
  "query": {
    "range": {
      "phase.startDateTime": {
        "from": "2019-11-11",
        "to": "2019-11-12"
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...