Class MergePositionsOperator

java.lang.Object
org.elasticsearch.compute.operator.lookup.MergePositionsOperator
All Implemented Interfaces:
Closeable, AutoCloseable, Operator, org.elasticsearch.core.Releasable

public final class MergePositionsOperator extends Object implements Operator
Combines values at the given blocks with the same positions into a single position for the blocks at the given channels.

Example, input pages consisting of three blocks:


 | positions    | field-1 | field-2 |
 ------------------------------------
 Page 1:
 | 1            |  a,b    |   2020  |
 | 1            |  c      |   2021  |
 Page 2:
 | 2            |  a,e    |   2021  |
 Page 3:
 | 4            |  d      |   null  |
 
Output:

 |  field-1   | field-2    |
 ---------------------------
 |  null      | null       |
 |  a,b,c     | 2020,2021  |
 |  a,e       | 2021       |
 |  null      | null       |
 |  d         | 2023       |
 
  • Constructor Details

    • MergePositionsOperator

      public MergePositionsOperator(int positionChannel, int[] mergingChannels, ElementType[] mergingTypes, IntBlock selectedPositions, BlockFactory blockFactory)
  • Method Details

    • needsInput

      public boolean needsInput()
      Description copied from interface: Operator
      whether the given operator can accept more input pages
      Specified by:
      needsInput in interface Operator
    • addInput

      public void addInput(Page page)
      Description copied from interface: Operator
      adds an input page to the operator. only called when needsInput() == true and isFinished() == false
      Specified by:
      addInput in interface Operator
    • finish

      public void finish()
      Description copied from interface: Operator
      notifies the operator that it won't receive any more input pages
      Specified by:
      finish in interface Operator
    • isFinished

      public boolean isFinished()
      Description copied from interface: Operator
      whether the operator has finished processing all input pages and made the corresponding output pages available
      Specified by:
      isFinished in interface Operator
    • getOutput

      public Page getOutput()
      Description copied from interface: Operator
      returns non-null if output page available. Only called when isFinished() == false
      Specified by:
      getOutput in interface Operator
    • close

      public void close()
      Description copied from interface: Operator
      notifies the operator that it won't be used anymore (i.e. none of the other methods called), and its resources can be cleaned up
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Specified by:
      close in interface Operator
      Specified by:
      close in interface org.elasticsearch.core.Releasable