display_name: RediSearch 2
capability_name: Search and query
author: RedisLabs
email: meir@redislabs.com
description: High performance search index on top of Redis (with clustering)
homepage: 'http://redisearch.io'
license: Redis Source Available License 2.0 (RSALv2) or the Server Side Public License v1 (SSPLv1) or the GNU Affero General Public License version 3 (AGPLv3)
command_line_args: ""
compatible_redis_version: "99.99"
# Minimal Redis (engine) version. 8.9 is the 8.10 pre-release line, the first with
# RedisModule_GetClusterNodeSlotRanges (MOD-15868). TODO: set to "8.10" once released.
min_redis_version: "8.9"
# Minimal Redis Enterprise (cluster) version - independent of the engine version above.
min_redis_pack_version: "8.0"
config_command: "_FT.CONFIG SET"
capabilities:
    - types
    - replica_of
    - failover_migrate
    - persistence_aof
    - persistence_rdb
    - clustering
    - backup_restore
    - reshard_rebalance
    - flash
    - crdb
    - eviction_expiry
    - hash_policy
    - intershard_tls
    - intershard_tls_pass
    - ipv6
    - asm
    - bigstore_version_2
exclude_commands:
    - FT.CREATE
    - FT.DROP
    - FT.DROPINDEX
    - FT.ALIASADD
    - FT.ALIASDEL
    - FT.ALIASUPDATE
    - FT.ALTER
    - FT.DICTADD
    - FT.DICTDEL
    - FT.SYNUPDATE
    - FT._CREATEIFNX
    - FT._DROPIFX
    - FT._DROPINDEXIFX
    - FT._ALTERIFNX
    - FT._ALIASADDIFNX
    - FT._ALIASDELIFX
    - _FT.CONFIG
    - _FT.DEBUG
    - _FT.PROFILE
    - _FT.SEARCH
    - _FT.INFO
    - _FT.AGGREGATE
    - _FT.MGET
    - _FT.CURSOR
    - _FT.SPELLCHECK
    - _FT.TAGVALS
    - search.CLUSTERREFRESH
    - search.CLUSTERINFO
overide_command:
    # The step field in modules is used to encodes the custom policy's requesting/replying policy:
    # -1 : requesting::random_shard
    # -2 : requesting::random_shard, replying::retrieve_cursor
    # -3 : requesting::by_cursor, replying::retrieve_cursor
    # We only specify a custom policy if the command could cause a bottleneck and should be spread across the cluster
    # If a routing policy is not specified the proxy default routing logic will be used
    # Command Arity: required by the proxy in order to validate commands before sending them to the module
    # It is mandatory because during the parsing of the module.json file
    # it is used in a python script as a direct key and get with default value is not used
    - {"command_arity": -1, "command_name": "FT.AGGREGATE", "first_key": 0, "flags": ["module", "readonly" ], "last_key": 1, "step": -2}
    - {"command_arity": -2, "command_name": "FT.CURSOR", "first_key": 3, "flags": ["module", "readonly"], "last_key": 1, "step": -3}
    - {"command_arity": -1, "command_name": "FT.HYBRID", "first_key": 0, "flags": ["module", "readonly"], "last_key": 1, "step": -1}
    - {"command_arity": -1, "command_name": "FT.SEARCH", "first_key": 0, "flags": ["module", "readonly"], "last_key": 0, "step": -1}
