2.4 管理索引文件
2.4.1 打开、关闭、检测、删除索引文件
一个关闭的索引将禁止写入或读取对其中数据的操作,而一个打开的索引文件可以允许用户对其中的数据文件进行操作。通过使用/{index名称}/_open 和/{index名称}/_close语句,可以打开或关闭指定的索引文件,具体方法见代码段2.9。
//代码段2.9: 打开及关闭索引文件my_index的方法
curl -XPOST 'localhost:9200/my_index/_open'
curl -XPOST 'localhost:9200/my_index/_close'
如下代码段2.10会检测索引文件weibo是否存在(通过返回的HTTP状态码进行检查)。如果返回的状态码是200,则表示存在相应的索引文件;如果返回的状态码是404,则表示文件不存在。
//代码段2.10: 检测索引文件weibo的状态
curl -XHEAD 'http://localhost:9200/weibo' -v
类似地,通过删除索引的DELETE API,可以删除一个或者多个索引,如下代码段2.11删除名为weibo1的索引文件。
//代码段2.11: 删除索引weibo1
curl -XDELETE 'http://localhost:9200/weibo1/'
还可使用通配符来批量删除名称相似的索引文件。如下代码段2.12会删除以weibo字符开头的一组索引文件。这里,也可使用_all参数来删除全部索引文件。
//代码段2.12: 使用通配符批量删除索引文件
curl -XDELETE 'http://localhost:9200/weibo*/'
2.4.2 清空索引缓存
通过下面的API,可以清空指定索引中的缓存(使用clear参数),参见代码段2.13。
//代码段2.13: 清空索引weibo中的缓存
curl -XPOST 'http://localhost:9200/weibo/_cache/clear'
如果指定了多个索引文件名称,也可以一次清空多个索引缓存,代码段2.14可以清空两个索引文件weibo1、weibo2中的缓存。
//代码段2.14: 清空多个索引缓存
curl -XPOST 'http://localhost:9200/weibo1, weibo2/_cache/clear'
2.4.3 刷新索引数据
通过POST方法中的_refresh参数语句,可以刷新一个或多个索引文件的状态,以便反映最新变化,参见代码段2.15。
//代码段2.15: 刷新索引数据
curl -XPOST 'http://localhost:9200/weibo/_refresh'
这里也可以通过指定多个索引名称,完成一次刷新多个索引文件(分别指定索引文件名)或全部索引(没指出索引文件名)的任务,方法如代码段2.16所示。
//代码段2.16: 一次刷新多个索引文件或全部索引文件
curl -XPOST 'http://localhost:9200/weibo1, weibo2/_refresh'
curl -XPOST 'http://localhost:9200/_refresh'
2.4.4 优化索引数据
相对于Lucene的索引,Elasticsearch索引过程多了分布式数据的扩展,它主要是用Tranlog进行各节点间的数据平衡。通过代码段2.17中的_optimize参数,可以优化一个或多个索引。
//代码段2.17: 优化索引数据
curl -XPOST 'http://localhost:9200/weibo/_optimize'
类似地,也可以通过指定多个index名称,完成一次优化多个索引文件或全部索引的任务,此处不再赘述。
2.4.5 flush操作
flush操作将暂存于内存中的临时数据送至索引文件,并清空内部操作日志等,如代码段2.18所示。
//代码段2.18: flush索引数据
curl -XPOST 'http://localhost:9200/weibo/_flush'
类似地,也可以通过指定多个Index名称,完成一次flush多个索引或全部索引的任务,此处不再赘述。