I am using an array field in elastic search and this array contains multiple JSON documents. Like this:
{
"imei": 358739050280669,
"date": "2018-02-20",
"id": 86739126,
"totalData": [
{
"gpsdt": "2018-02-20",
"satno": 0,
"analog3": -1,
"digital1": 0,
"digital2": 1,
"digital3": 1,
"digital4": 2,
"lastgpsdt": "2018-02-20T11:54:00",
"longitude": 78.081218,
"odometer": 0,
"intbatlevel": 6,
"odo": 0,
"latitude": 29.951449,
"srtangle": 62,
"analog4": 13,
"speed": 0,
"analog2": -1,
"analog1": 9,
"extbatlevel": 0
},
{
"gpsdt": "2018-02-20",
"speed": 22,
"satno": 0,
"digital1": 0,
"digital2": 1,
"digital3": 1,
"digital4": 2,
"lastgpsdt": "2018-02-20T22:48:00",
"longitude": 78.062898,
"odometer": 0,
"intbatlevel": 6,
"odo": 113,
"latitude": 29.948898,
"srtangle": 67,
"analog4": 12,
"analog3": -1,
"analog2": -1,
"analog1": 8,
"extbatlevel": 0
}
]
}
Now I want to apply a filter on "imei" and a date range filter on "lastgpsdt" field and in output I want only those documents which matches to applied filter.
For example: I have to get data for imei no 358739050280669 and date range (field name is lastgpsdt) between 2018-02-20T10:54:00 and 2018-02-20T12:54:00
So it should return only one document (according to given data) from totalData array field.
Please suggest me a query to achieve this.
Output should be like below:
{
"imei": 358739050280669,
"date": "2018-02-20",
"id": 86739126,
"totalData": [
{
"gpsdt": "2018-02-20",
"satno": 0,
"analog3": -1,
"digital1": 0,
"digital2": 1,
"digital3": 1,
"digital4": 2,
"lastgpsdt": "2018-02-20T11:54:00",
"longitude": 78.081218,
"odometer": 0,
"intbatlevel": 6,
"odo": 0,
"latitude": 29.951449,
"srtangle": 62,
"analog4": 13,
"speed": 0,
"analog2": -1,
"analog1": 9,
"extbatlevel": 0
}
]
}
Thanks In Advance.
totalDatafield.