Quickstart for CQL index management
This quick start example provides an overview of creating and altering search indexes using CQL index management commands.
Creating a search index
- 
Launch cqlshand create a tutorial keyspace on a solr node:cqlsh
- 
Set up the table schema and create a default index: 
- 
Create a keyspace, table, and search index: CREATE KEYSPACE demo WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': 1}; CREATE TABLE demo.users ( userid uuid, firstname text, lastname text, email text, created_date timestamp, PRIMARY KEY (userid)); CREATE SEARCH INDEX ON demo.users;A new search index is generated on the table. Existing data is reindexed. 
- 
Use the CQL shell DESCRIBE SEARCH INDEX SCHEMAto view the pending search index schemaThe generated schema looks like this: <schema name="autoSolrSchema" version="1.5"> <types> <fieldType class="org.apache.solr.schema.TextField" name="TextField"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType> <fieldType class="org.apache.solr.schema.UUIDField" name="UUIDField"/> <fieldType class="org.apache.solr.schema.TrieDateField" name="TrieDateField"/> </types> <fields> <field indexed="true" multiValued="false" name="firstname" stored="true" type="TextField"/> <field docValues="true" indexed="true" multiValued="false" name="userid" stored="true" type="UUIDField"/> <field indexed="true" multiValued="false" name="email" stored="true" type="TextField"/> <field indexed="true" multiValued="false" name="lastname" stored="true" type="TextField"/> <field docValues="true" indexed="true" multiValued="false" name="created_date" stored="true" type="TrieDateField"/> </fields> <uniqueKey>userid</uniqueKey> </schema>
- 
To increase tolerance of non-ASCII characters in the name field, add a new fieldTypeto the schema with this statement:ALTER SEARCH INDEX SCHEMA ON demo.users ADD types.fieldType [ @name='TextField_intl' , @class='org.apache.solr.schema.TextField' ] WITH $${ "analyzer": [ { "type": "index", "tokenizer": { "class": "solr.StandardTokenizerFactory" }, "filter": [ { "class": "solr.LowerCaseFilterFactory" }, { "class": "solr.ASCIIFoldingFilterFactory" } ] }, { "type": "search", "tokenizer": { "class": "solr.StandardTokenizerFactory" }, "filter": [ { "class": "solr.LowerCaseFilterFactory" }, { "class": "solr.ASCIIFoldingFilterFactory" } ] } ] }$$;The dollar signs ($$) syntax in the ALTER SEARCH INDEX SCHEMAexample are dollar quotes to escape a single quotation mark, see Escaping single quotation marks. This newfieldTypehas separate index and search analysis phases:<fieldType class="org.apache.solr.schema.TextField" name="TextField_intl"> <analyzer type="index"> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.ASCIIFoldingFilterFactory"/> <tokenizer class="solr.StandardTokenizerFactory"/> </analyzer> <analyzer type="search"> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.ASCIIFoldingFilterFactory"/> <tokenizer class="solr.StandardTokenizerFactory"/> </analyzer> </fieldType>
- 
Change the type on the firstname and lastname fields: ALTER SEARCH INDEX SCHEMA ON demo.users SET field[@name='firstname']@type = 'TextField_intl';ALTER SEARCH INDEX SCHEMA ON demo.users SET field[@name='lastname']@type = 'TextField_intl';
- 
In contrast to the dsetool search index management commands, all changes made with ALTER SEARCH INDEXaffect only the pending resources for the search index. To use the changes:- 
Reload the index. RELOAD SEARCH INDEX ON demo.users;
- 
If there is existing data in the index, rebuild the index. REBUILD SEARCH INDEX ON demo.users;
 
- 
