• 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

  • 相关阅读:
    Laravel笔记
    Mysql函数大全
    nginx中文文档
    解析富文本框
    VSCode的C++环境配置,多cpp在同一文件夹(json方式)
    UltraISO光盘刻录
    plog日志库(c++)
    .NET Core安装
    Halcon深度学习——奇异值检测
    C++命名规范
  • 原文地址:https://www.cnblogs.com/fat-girl-spring/p/12851432.html
Copyright © 2020-2023  润新知