У меня есть индекс ES с такими документами:
from_1,to_1,timestamp_1
from_1,to_1,timestamp_2
from_1,to_2,timestamp_3
from_2,to_3,timestamp_4
from_1,to_2,timestamp_5
from_2,to_3,timestamp_6
from_1,to_1,timestamp_7
from_2,to_4,timestamp_8
Мне нужен запрос, который вернул бы документ, только если его комбинация значений from
и to
отличается от предыдущего просмотренного документа с тем же значением from
.
То есть с приведенным выше образцом:
- документ с
timestamp_1
должен быть в результате, потому что нет более раннего документа с from_1
+ to_1
комбинацией
- документ с
timestamp_2
должен быть пропущен, поскольку его комбинация from
+ to
точно такая же, как последний просмотренный документ с from
= from_1
- документ с
timestamp_3
должен быть в результате, потому что его поле to
(to_2
) отличается от значения последнего, замеченного с тем же from
(to_1
в документе с timestamp_1
- документ с
timestamp_4
должен быть в результате
- документ с
timestamp_5
не должен быть в результате, потому что он имеет ту же комбинацию от + до, что и последний, с которым from_1
(документ с timestamp_3
)
- документ с
timestamp_6
не должен быть в результате, потому что он имеет ту же комбинацию от + до, что и последний, который был замечен с from_2
(документ с timestamp_4
)
- документ с
timestamp_7
должен быть в результате, потому что он имеет различную комбинацию от + до последнего увиденного с from_1
(документ с timestamp_3
)
- документ с
timestamp_8
должен быть в результате, потому что его комбинация совершенно новая
Мне нужно извлечь все такие «полууникальные» документы из индекса, поэтому было бы неплохо, если бы можно было использовать запрос scroll
или after_key
, если используется агрегация.
Есть идеи как подойти?