如何设置logstash.conf?

时间:2017-01-03 02:35:59

标签: mysql elasticsearch logstash

我正在使用带有logstash的elasticsearch 5.1.1来使用mysql。

logstash.conf

input {
    jdbc {
            jdbc_driver_library => "lib/mysql-connector-java-5.1.33.jar"
            jdbc_driver_class => "com.mysql.jdbc.Driver"
            jdbc_connection_string => "jdbc:mysql://localhost:3306/test"
            jdbc_user => "test"
            jdbc_password => "test"
            statement => "SELECT * FROM test"
            schedule => "* * * * *"
                type => "test"
       }
    jdbc {
            jdbc_driver_library => "lib/mysql-connector-java-5.1.33.jar"
            jdbc_driver_class => "com.mysql.jdbc.Driver"
            jdbc_connection_string => "jdbc:mysql://localhost:3306/test"
            jdbc_user => "test"
            jdbc_password => "test"
            statement => "SELECT * FROM test2"
            schedule => "* * * * *"
                type => "test2"
        }
}

output {
        elasticsearch {
                hosts => ["localhost:9200"]
                 index => "test"
                document_type => "%{type}"
                document_id => "%{test_id}"
        }
}

$ bin / logstash -f logstash.conf

有效。

但我想添加这些选项。

{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "korean": {
            "type": "custom",
            "tokenizer": "seunjeon_default_tokenizer"
          }
        },
        "tokenizer": {
          "seunjeon_default_tokenizer": {
            "type": "seunjeon_tokenizer",
            "index_eojeol": false,
            "user_words": [
              "abc"
            ]
          }
        }
      }
    }
  }
}

如何将此选项添加到conf文件?

如果我添加更多具有不同列的表,如何动态设置document_id?

1 个答案:

答案 0 :(得分:1)

关于第一个问题:

  

如何将此选项添加到conf文件?

我相信索引设置可以用两种不同的方式设置

在你的情况下,我认为第一种选择更好。为此,您需要创建一个index template,其中包含您希望在创建索引或索引时应用的​​设置。 "模板的价值" key必须匹配您将要创建的索引的名称(" test"在您的示例中)。

我认为您无法直接向logstash配置文件添加索引设置。您可以使用REST API(PUT _template / template_name端点)上传模板,或者让logstash加载模板。

如果您想让logstash创建模板,可以使用template选项在elasticsearch块中的logstash配置中引用模板文件。 logstash配置文件中引用的模板文件必须存储在运行logstash的同一主机中。您可以使用template_overwrite选项来控制是否覆盖现有索引模板。

logstash配置如下所示:

output {
    elasticsearch {
            hosts => ["localhost:9200"]
            index => "test"
            document_type => "%{type}"
            document_id => "%{test_id}"
            template => "path/to/the/template/file"
    }

}

模板文件将包含:

{
  "template": "test",
  "settings" : {
   "index":{
     "analysis":{
       "analyzer":{
         "korean":{
           "type":"custom",
           "tokenizer":"seunjeon_default_tokenizer"
         }
       },
       "tokenizer": {
         "seunjeon_default_tokenizer": {
           "type": "seunjeon_tokenizer",
           "index_eojeol": false,
           "user_words": ["abc"]
         }
       }
     }
   }
  }
}

您可能还希望在索引模板中加入mappings

希望这有帮助!

(请注意,我没有尝试过这种特定情况)