Unable to loop through array field ES 6.1


(Hudson Dunice) #1

Hey guys,

I'm facing a problem in ElasticSearch 6.1 that I cannot solve and I don't know why. I have read the docs several times and maybe I'm missing something.

I have a scripted query that needs to do some calculation before decides if a record is available or not.

Here is the following script:

What I'm doing is trying to loop though an array field with the following source:

  "unavailability": [
    {
      "starts_at": "2018-11-27T18:00:00+00:00",
      "local_ends_at": "2018-11-27T15:04:00",
      "local_starts_at": "2018-11-27T13:00:00",
      "ends_at": "2018-11-27T20:04:00+00:00"
    },
    {
      "starts_at": "2018-12-04T18:00:00+00:00",
      "local_ends_at": "2018-12-04T15:04:00",
      "local_starts_at": "2018-12-04T13:00:00",
      "ends_at": "2018-12-04T20:04:00+00:00"
    },
  ]

When the script is executed it throws the error: No field found for [unavailability] in mapping with types [aircraft]

Is there any clue to make it work?

Thanks

UPDATE
Here is the query:

Mapping:

Data example:


(Val Crettaz) #2

I didn't see this was cross-posted, but here's my take:


(Hudson Dunice) #3

Hi @val

Thanks for the fast response.

As I previously answered your comment at StackOverflow, I already tried that approach but it throws Variable [_source] is not defined. .

:confused:


(Val Crettaz) #4

See my second comment :wink:


(Hudson Dunice) #5

I solve my use-case in a different approach.

Instead having a field as array of object like unavailability was I decided to create two fields as array of datetime:
unavailable_from
unavailable_to

My script walks through the first field then checks the second with the same position.


(Val Crettaz) #6

Hmmm, it might well be this issue that prevents you from getting access to the source field.
Glad you figured another solution.


(Hudson Dunice) #7

Oh... sad. :confused:

Thanks for the support and the link @val .


(system) #8

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.