Hello Guys,
I'm new for Elasticsearch query. Currently, I'm working on a data set contains two layers nested JSON. For example:
{
"data": [
{
"number": 1,
"startDate": "2020-01-08",
"finalDate": "2020-01-04",
"items": [
{
"Id": 8154725563,
"Code": "1",
"finalDate": "2020-01-04"
},
{
"Id": 8154725564,
"Code": "2",
"finalDate": "2020-01-04"
}
]
},
{
"number": 2,
"startDate": "2020-02-08",
"finalDate": "2020-02-06",
"items": [
{
"Id": 8154725568,
"Code": "1",
"finalDate": "2020-02-06"
},
{
"Id": 8154725569,
"Code": "2",
"finalDate": "2020-02-06"
},
{
"Id": 8154725572,
"Code": "71",
"finalDate": "2020-02-06"
}
]
}
] }
I would like to find the solution if I can calculation time difference between first layer and second layer. Like data.startDate - data.items.finalDate
When I running my query, it looks like I cannot get result across different nested layer.
{
"size":0,
"query":{
"match":{
"userid":1234576
}
},
"aggs": {
"all_data": {
"nested": {
"path": "data"
},
"aggs": {
"data_terms": {
"nested": {
"path": "data.items"
},
"aggs": {
"cnt_items_limit": {
"filter": {
"bool": {
"must": [
{
"script": {
"script": "if (doc['data.items.finalDate'].size()==0) {return new Date().getTime() - doc['data.startDate'].value.toInstant().toEpochMilli() <= 0} else {return doc['data.items.finalDate'].value.toInstant().toEpochMilli() - doc['data.startDate'].value.toInstant().toEpochMilli() <= 0}"
}
}
]
}
}
}
}
}
}
}
}
}
Can you help on it? Thank you