Class IndexRouting

java.lang.Object
org.elasticsearch.cluster.routing.IndexRouting
Direct Known Subclasses:
IndexRouting.ExtractFromSource

public abstract class IndexRouting extends Object
Generates the shard id for (id, routing) pairs.
  • Field Details

    • indexName

      protected final String indexName
  • Method Details

    • fromIndexMetadata

      public static IndexRouting fromIndexMetadata(IndexMetadata metadata)
      Build the routing from IndexMetadata.
    • process

      public abstract void process(IndexRequest indexRequest)
    • indexShard

      public abstract int indexShard(String id, @Nullable String routing, org.elasticsearch.xcontent.XContentType sourceType, BytesReference source)
      Called when indexing a document to generate the shard id that should contain a document with the provided parameters.
    • updateShard

      public abstract int updateShard(String id, @Nullable String routing)
      Called when updating a document to generate the shard id that should contain a document with the provided _id and (optional) _routing.
    • deleteShard

      public abstract int deleteShard(String id, @Nullable String routing)
      Called when deleting a document to generate the shard id that should contain a document with the provided _id and (optional) _routing.
    • getShard

      public abstract int getShard(String id, @Nullable String routing)
      Called when getting a document to generate the shard id that should contain a document with the provided _id and (optional) _routing.
    • collectSearchShards

      public abstract void collectSearchShards(String routing, IntConsumer consumer)
      Collect all of the shard ids that *may* contain documents with the provided routing. Indices with a routing_partition will collect more than one shard. Indices without a partition will collect the same shard id as would be returned by getShard(java.lang.String, java.lang.String).

      Note: This is called for any search-like requests that have a routing specified but only if they have a routing specified. If they do not have a routing they just use all shards in the index.

    • hashToShardId

      protected final int hashToShardId(int hash)
      Convert a hash generated from an (id, routing) pair into a shard id.
    • checkIndexSplitAllowed

      public void checkIndexSplitAllowed()
      Check if the _split index operation is allowed for an index
      Throws:
      IllegalArgumentException - if the operation is not allowed