У нас есть требование, если есть newId, тогда мы должны получить данные меньше, чем сегодняшняя дата, и если поле newId отсутствует в данных, мы должны получить данные до даты истечения + 2Months. Я пытался выполнить запрос ниже, но результат не соответствует ожиданиям.
{
"id":"234",
"startDate":"23/07/2020",
"endDate":"24/09/20202",
"newId":"2345"
},
{
"id":"234",
"startDate":"23/07/2020",
"endDate":"24/09/20202",
"newId":null
},
{
"id":"235",
"startDate":"23/07/2020",
"endDate":"24/06/2020",
"newId":"2345"
},
Запрос, который я пытался
{
"query": {
"bool": {
"must": [
{
"match_all": {}
},
{
"bool": {
"must": [
{
"bool": {
"must": [
{
"exists": {
"field": "newId"
}
},
{
"range": {
"endDate": {
"gte":"now/d"
}
}
}
]
}
},
{
"bool": {
"must_not": [
{
"exists": {
"field": "newId"
}
},
{
"range": {
"endDate": {
"gte": "now-2M"
}
}
}
]
}
}
]
}
}
]
}
}
}
Ожидаемый результат
{"id": "234", "startDate": "23.07.2020", "endDate": "24.09.20202", "newId": "2345"}, {" id ":" 234 "," startDate ":" 23.07.2020 "," endDate ":" 24.09.20202 "," newId ": null},