全部产品
云市场

DDL语法

更新时间:2019-11-15 15:19:02

1. 创建全文索引

  1. create search index [if not exists] on [schema.]table_name
  2. (column_def[,...])
  3. [ASYNC]
  4. [index_options]
  5. column_def:
  6. column_name [{column_option,..}[,...]]
  7. column_option:
  8. docvalues=true | false // defalut value: false
  9. | analyer=standard | ik // defalut value: none
  10. | stored=true | false // defalut value: false
  11. | indexed=true | false // defalut value: true
  12. index_options:
  13. SHARD_NUM = [integer number] // defalut value: rs size * 2
  14. | REPLICATION_NUM = [integer number] // default value: 1
  15. | COMMIT_INTERVAL_TIME = [integer number] // default value: 15000 (单位ms)
说明

其中 column_option 和 index_options 可省略,省略后使用默认的值。

  • SHARD_NUM 表示 solr collection 的 shard 数量。
  • REPLICATION_NUM 表示 solr collection 的 replication 数量。
  • COMMIT_INTERVAL_TIME 表示写collection时每次自动commit的间隔时间。值越小索引可见间隔越短,但写入吞吐会下降。

分词器:分词器:standard是solr自带的默认分词器,能够支持对英文文本进行分词,但是如果是对中文文本进行分词则无法很好的支持。我们引入了ik分词器,需要对中文文本进行分词处理的请选择这个分词器。

索引数据同步:

  1. 创建同步索引时,会自动发起索引 rebuild 操作,至到索引数据全部生成后,建表操作完成。
  2. 创建异步索引时(使用ASYNC 关键字),不会自动发起索引的 rebuild,需要再次执行 alter rebuild 完成索引同步。
示例
  1. CREATE SEARCH INDEX ON TEST (NAME,ADDR);
  2. CREATE SEARCH INDEX ON TEST (NAME,ADDR)SHARD_NUM=2, REPLICATION_NUM=3;
  3. CREATE SEARCH INDEX ON TEST (NAME,ADDR{DOCVALUES=true}) COMMIT_INTERVAL_TIME=10000 ;
  4. CREATE SEARCH INDEX ON TEST (NAME {DOCVALUES=true, ANALYZER= standard}, ADDR);
  5. CREATE SEARCH INDEX ON TEST (NAME,ADDR)ASYNC SHARD_NUM = 1, REPLICATION_NUM = 1;

2. 删除全文索引

  1. drop search index [if exists] on [schema.]table_name;
示例
  1. drop search index on test;
  2. drop search index on s.test;
  3. drop search index if exists on test;

3. Alter 全文索引

  1. alter search index [if exists] on [schema.]table_name actions;
  2. actions:
  3. commit // commit 索引数据,立即可见
  4. | set option // 设置索引属性
  5. | rebuild // rebuild search index
  6. | reload //Solr配置生效
  7. | drop column [if exists] column_name[,...]
  8. | add [if not exists] column_def[,...]
  9. option:
  10. COMMIT_INTERVAL_TIME = [integer number] // default value: 15000
  11. column_def:
  12. column_name [{column_option,..}[,...]]
  13. column_option:
  14. docvalues=true | false // defalut value: false
  15. | analyer=standard | ik // defalut value: none
  16. | stored=true | false // defalut value: false
  17. | indexed=true | false // defalut value: true
说明
  • set option 当前只支持设置 COMMIT_INTERVAL_TIME。
  • rebuld 表示根据索引信息将当前全量Phoenix 表数据同步到全文索引中,操作较重,建议在业务低峰期进行,在rebuild不需要停机,系统会自动解决历史数据和新增数据的一致性问题。
  • add column执行成功后,只能看到该列成功时刻后的新增数据,对于该列的存量历史数据并不能立刻可见。如果要查询该列的存量历史数据,需要执行rebuild。
  • drop column执行成功后,该列会立刻不可查,但是历史数据实际是存在的,会占用存储空间。如果需要完全同步,需要执行rebuild。
示例
  1. alter search index on test commit;
  2. alter search index on test set COMMIT_INTERVAL_TIME=10000;
  3. alter search index if exists on test rebuild;
  4. alter search index if exists on test drop if exists name, addr;
  5. alter search index if exists on test add if not exists NAME,ADDR{DOCVALUES=true};