Package org.apache.storm.redis.bolt

## Class RedisFilterBolt

- java.lang.Object
- - org.apache.storm.topology.base.BaseComponent
  - - org.apache.storm.topology.base.BaseRichBolt
    - - org.apache.storm.topology.base.BaseTickTupleAwareRichBolt
      - - org.apache.storm.redis.bolt.AbstractRedisBolt
        - - org.apache.storm.redis.bolt.RedisFilterBolt

- All Implemented Interfaces:
    `Serializable`, `IBolt`, `IComponent`, `IRichBolt`

      public class RedisFilterBolt
      extends AbstractRedisBolt

  Basic bolt for querying from Redis and filters out if key/field doesn't exist. If key/field exists on Redis, this bolt just forwards input tuple to default stream.

  Supported data types: STRING, HASH, SET, SORTED_SET, HYPER_LOG_LOG, GEO.

  Note: For STRING it checks such key exists on the key space. For HASH and SORTED_SET and GEO, it checks such field exists on that data structure. For SET and HYPER_LOG_LOG, it check such value exists on that data structure. (Note that it still refers key from tuple via RedisFilterMapper#getKeyFromTuple()) In order to apply checking this to SET, you need to input additional key this case.

  Note2: If you want to just query about existence of key regardless of actual data type, specify STRING to data type of RedisFilterMapper.

  See Also:
    Serialized Form

- - ### Field Summary

    - ### Fields inherited from class org.apache.storm.redis.bolt.AbstractRedisBolt

      `collector`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `RedisFilterBolt​(JedisClusterConfig config, RedisFilterMapper filterMapper)` | Constructor for Redis Cluster environment (JedisCluster).
    `RedisFilterBolt​(JedisPoolConfig config, RedisFilterMapper filterMapper)` | Constructor for single Redis environment (JedisPool).

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `declareOutputFields​(OutputFieldsDeclarer declarer)` | Declare the output schema for all the streams of this topology.
    `void` | `process​(Tuple input)` | Process a single non-tick tuple of input.

    - ### Methods inherited from class org.apache.storm.redis.bolt.AbstractRedisBolt

      `cleanup, getInstance, prepare`

    - ### Methods inherited from class org.apache.storm.topology.base.BaseTickTupleAwareRichBolt

      `execute, onTickTuple`

    - ### Methods inherited from class org.apache.storm.topology.base.BaseComponent

      `getComponentConfiguration`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.apache.storm.topology.IComponent

      `getComponentConfiguration`

- - ### Constructor Detail

    - #### RedisFilterBolt

          public RedisFilterBolt​(JedisPoolConfig config,
                                 RedisFilterMapper filterMapper)

      Constructor for single Redis environment (JedisPool).
      Parameters:
        `config` - configuration for initializing JedisPool
        `filterMapper` - mapper containing which datatype, query key that Bolt uses

    - #### RedisFilterBolt

          public RedisFilterBolt​(JedisClusterConfig config,
                                 RedisFilterMapper filterMapper)

      Constructor for Redis Cluster environment (JedisCluster).
      Parameters:
        `config` - configuration for initializing JedisCluster
        `filterMapper` - mapper containing which datatype, query key that Bolt uses

  - ### Method Detail

    - #### process

          public void process​(Tuple input)

      Process a single non-tick tuple of input. Implementation needs to handle ack manually. More details on `IBolt.execute(Tuple)`.
      Specified by:
        `process` in class `BaseTickTupleAwareRichBolt`
      Parameters:
        `input` - The input tuple to be processed.

    - #### declareOutputFields

          public void declareOutputFields​(OutputFieldsDeclarer declarer)

      Declare the output schema for all the streams of this topology.
      Parameters:
        `declarer` - this is used to declare output stream ids, output fields, and whether or not each output stream is a direct stream