如何配置logstash以创建elasticsearch索引?

时间:2016-02-25 00:03:31

标签: indexing elasticsearch logstash

elasticsearch版本:elasticsearch-2.2.0.rpm logstash版本:logstash-2.2.2-1.noarch.rpm

我启动elasticsearch,然后使用具有基本stdin / stdout的/etc/logstash/conf.d/logstash.conf进行logstash,但不创建弹性搜索索引。如果我将以下内容添加到我的logstash输出配置中,我会得到一个指示黄色状态的索引:

action => “创建” index => “main_index”

它是黄色且不可用的原因是因为分片数为5而副本为3.如果我运行:

curl -XPUT'http://localhost:9200/index2/' - d' 指数:    number_of_shards:1    number_of_replicas:0 “

“index2”为绿色且可用。我如何告诉logstash和/或elasticsearch我希望我的索引有1个碎片和0个副本而不发出curl命令?

感谢。

3 个答案:

答案 0 :(得分:3)

您有三种解决方案:

  1. 您可以使用正确的设置覆盖Logstash使用的default index templateprovide your own,例如使用"number_of_replicas": 0
  2. 您在ES中使用正确的索引设置
  3. 创建index template
  4. elasticsearch.yml中,您更改名为index.number_of_replicas的设置并将其设置为0(然后重新启动ES)

答案 1 :(得分:0)

例如,你可以使用以下请求创建一个小索引 - 只有一个主分片 - 而不是副本分片:

   PUT /my_index
       {
        "settings": {
            "number_of_shards" :   1,
            "number_of_replicas" : 0
       }
       }

答案 2 :(得分:0)

为了完成Val´s answer,这里是ES版本5.x的更新:

解决方案3不起作用,因为配置文件禁用了索引级别配置:“由于弹性搜索5.x索引级别设置无法在诸如elasticsearch.yaml之类的节点配置上设置”

解决方案1确实有效,下面是一个例子:

  • here下载并编辑ES 5.x的基本模板。
  • 更改模板名称以匹配您的索引名称模式,并首先添加您要更新的索引设置:

    {
      "template" : "syslog*",
      "version" : 50001,
      "settings" : {
       "index.refresh_interval" : "5s",
       "index.number_of_replicas" : 0,
       "index.number_of_shards" : 1
      },
    ...
    }
    
  • 更新logstash配置,以便输出使用创建的模板:

    output {
      elasticsearch {
        hosts => ["localhost:9200"]
        index => "syslog%{+YYYY.MM.dd}"
        template => "path_to_your_template.json"
        template_name => "syslog*"
        template_overwrite => true
      }
    }
    
  • 重启服务