大数据搜索与日志挖掘及可视化方案:ELK Stack:Elasticsearch、Logstash、Kibana (第2版)
上QQ阅读APP看书,第一时间看更新

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多个索引或全部索引的任务,此处不再赘述。