org.apache.ignite.spi.indexing

## Interface IndexingSpi

All Superinterfaces:
  IgniteSpi

All Known Implementing Classes:
  NoopIndexingSpi

    public interface IndexingSpi
    extends IgniteSpi

Indexing SPI allows user to index cache content. Using indexing SPI user can index data in cache and run queries.

NOTE: this SPI (i.e. methods in this interface) should never be used directly. SPIs provide internal view on the subsystem and is used internally by Ignite kernal. In rare use cases when access to a specific implementation of this SPI is required - an instance of this SPI can be obtained via `Ignite.configuration()` method to check its configuration properties or call other non-SPI methods. Note again that calling methods from this interface on the obtained instance can lead to undefined behavior and explicitly not supported. NOTE: Key and value arguments of IgniteSpi methods can be `BinaryObject` instances. BinaryObjects can be deserialized manually if original objects needed. Here is a Java example on how to configure SPI.

     IndexingSpi spi = new MyIndexingSpi();

     IgniteConfiguration cfg = new IgniteConfiguration();

     // Overrides default indexing SPI.
     cfg.setIndexingSpi(spi);

     // Starts grid.
     Ignition.start(cfg);

Here is an example of how to configure SPI from Spring XML configuration file.

     <property name="indexingSpi">
         <bean class="com.example.MyIndexingSpi">
         </bean>
     </property>

For information about Spring framework visit www.springframework.org

### Method Summary

All Methods Instance Methods Abstract Methods
`Iterator<javax.cache.Cache.Entry<?,?>>` `query(@Nullable String cacheName, Collection<Object> params, @Nullable IndexingQueryFilter filters)` Executes query.
`void` `remove(@Nullable String cacheName, Object key)` Removes index entry by key.
`void` `store(@Nullable String cacheName, Object key, Object val, long expirationTime)` Updates index.

### Methods inherited from interface org.apache.ignite.spi.IgniteSpi

`getName, getNodeAttributes, onClientDisconnected, onClientReconnected, onContextDestroyed, onContextInitialized, spiStart, spiStop`

### Method Detail

#### query

    Iterator<javax.cache.Cache.Entry<?,?>> query(@Nullable
                                                 @Nullable String cacheName,
                                                 Collection<Object> params,
                                                 @Nullable
                                                 @Nullable IndexingQueryFilter filters)
                                          throws IgniteSpiException

Executes query.

Parameters:
  `cacheName` - Cache name.
  `params` - Query parameters.
  `filters` - System filters.
Returns:
  Query result. If the iterator implements `AutoCloseable` it will be correctly closed.
Throws:
  `IgniteSpiException` - If failed.

#### store

    void store(@Nullable
               @Nullable String cacheName,
               Object key,
               Object val,
               long expirationTime)
        throws IgniteSpiException

Updates index. Note that key is unique for cache, so if cache contains multiple indexes the key should be removed from indexes other than one being updated.

Parameters:
  `cacheName` - Cache name.
  `key` - Key.
  `val` - Value.
  `expirationTime` - Expiration time or 0 if never expires.
Throws:
  `IgniteSpiException` - If failed.

#### remove

    void remove(@Nullable
                @Nullable String cacheName,
                Object key)
         throws IgniteSpiException

Removes index entry by key.

Parameters:
  `cacheName` - Cache name.
  `key` - Key.
Throws:
  `IgniteSpiException` - If failed.

${current.year} Copyright © Apache Software Foundation

Follow @ApacheIgnite

Ignite Database and Caching Platform | : ver. 2.9.0
Release Date | : October 15 2020