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

posted @ 2020-05-08 16:45  fat_girl_spring  阅读(2915)  评论(0编辑  收藏  举报