Elasticsearch创建索引(index)及一个文档(document)
Index
我们可以看到在Kibana右边的窗口中有下面的输出:
在上面,我们可以看出来我们已经成功地创建了一个叫做twitter的index。通过这样的方法,我们可以自动创建一个index。如果大家不喜欢自动创建一个index,我们可以修改如下的一个设置:
PUT _cluster/settings { "persistent": { "action.auto_create_index": "false" } }
详细设置请参阅链接。如果你你想禁止自动创建索引,您必须配置action.auto_create_index以允许这些创建以下索引的组件:
PUT _cluster/settings { "persistent": { "action.auto_create_index": ".monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*" } }
如果使用Logstash或Beats,则应在上面的列表中添加其他索引名称。我们也可以在elasticsearch.yml里进行配置。
action.auto_create_index: .monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*
Refresh
通常对一个通过上面方法写入到Elasticsearch的文档,在默认的情况下并不马上可以进行搜索。这是因为在Elasticsearch的设计中,有一个叫做refresh的操作。它可以使更改可见以进行搜索的操作。通常会有一个refresh timer来定时完成这个操作。这个周期为1秒。这也是我们通常所说的Elasticsearch可以实现秒级的搜索。当然这个timer的周期也可以在索引的设置中进行配置。如果我们想让我们的结果马上可以对搜索可见,我们可以用如下的方法:
PUT twitter/_doc/1?refresh=true { "user": "GB", "uid": 1, "city": "Beijing", "province": "Beijing", "country": "China" }
上面的方式可以强制使Elasticsearch进行refresh的操作,当然这个是有代价的。频繁的进行这种操作,可以使我们的Elasticsearch变得非常慢。另外一种方式是通过设置refresh=wait_for。这样相当于一个同步的操作,它等待下一个refresh周期发生完后,才返回。这样可以确保我们在调用上面的接口后,马上可以搜索到我们刚才录入的文档:
PUT twitter/_doc/1?refresh=wait_for { "user": "GB", "uid": 1, "city": "Beijing", "province": "Beijing", "country": "China" }
Open/close Index
Elasticsearch支持索引的在线/离线模式。 使用脱机模式时,在群集上几乎没有任何开销地维护数据。 关闭索引后,将阻止读/写操作。 当您希望索引重新联机时,只需打开它即可。 但是,关闭索引会占用大量磁盘空间。 您可以通过将cluster.indices.close.enable的默认值从true更改为false来禁用关闭索引功能,以避免发生意外。
一旦twitter索引被关闭了,那么我们再访问时会出现如下的错误:
我们可以通过_open接口来重新打开这个index:
Freeze/unfreeze Index
冻结索引(freeze index)在群集上几乎没有开销(除了将其元数据保留在内存中),并且是只读的。 只读索引被阻止进行写操作,例如docs-index或force merge。 请参阅冻结索引和取消冻结索引。
冻结索引受到限制,以限制每个节点的内存消耗。 每个节点的并发加载的冻结索引数受search_throttled线程池中的线程数限制,默认情况下为1。 默认情况下,即使已明确命名冻结索引,也不会针对冻结索引执行搜索请求。 这是为了防止由于误将冻结的索引作为目标而导致的意外减速。 如果要包含冻结索引做搜索,必须使用查询参数ignore_throttled = false来执行搜索请求。
我们可以使用如下的命令来对twitter索引来冻结:
POST twitter/_freeze
在执行上面的命令后,我们再对twitter进行搜索:
我们搜索不到任何的结果。按照我们上面所说的,我们必须加上ignore_throttled=false参数来进行搜索:
显然对于一个frozen的索引来说,我们是可以对它进行搜索的。我们可以通过如下的命令来对这个已经冻结的索引来进行解冻:
POST twitter/_unfreeze
一旦我们的索引被成功解冻,那么它就可以像我们正常的索引来进行操作了,而不用添加参数 ignore_throttled=false 来进行访问。
转载至https://blog.csdn.net/UbuntuTouch/article/details/99481016